R의 목록에 요소 추가
R의 목록에 임의의 수의 요소를 추가하기 위해 루프를 사용하는 방법에는 여러 가지가 있습니다. 일부는 요소 수가 많을 때 느려질 수 있습니다. 이 튜토리얼은 R 루프의 목록에 요소를 추가하는 가장 효율적인 방법을 소개합니다.
이러한 알고리즘을 구현하는 일반적인 방법은while
루프를 만들고 루프 내에서c
(연결) 명령을 사용하는 것입니다. 각 반복 내에서c
함수를 사용하여 요소를 추가합니다. 이 예에서는 색인 변수가 10,000에 도달 할 때까지 값 (i*3
)이 목록에 추가됩니다.
i <- 1
mylist <- c()
while (i<10) {
mylist <- c(mylist, i*3)
i <- i+1
}
cat(mylist)
출력:
3 6 9 12 15 18 21 24 27
이전 예제의 문제점은 연결이 실행될 때마다 전체 목록이 복사된다는 것입니다. 대용량 데이터 세트로 작업 할 때 모든 요소를 추가하는 데 걸리는 시간이 엄청날 수 있습니다.
length
함수를 사용하여 R의 목록에 추가
루프 내의 목록에 임의의 수의 요소를 추가하는보다 효율적인 방법은 각 반복에서 length
함수를 사용하는 것입니다. length
함수를 사용하면 목록의 요소 수를 가져 와서 각 새 요소를 마지막 요소 뒤에있는 색인에 할당 할 수 있습니다.length(mylist) + 1
.
아래 예제는 이전 예제와 동일하지만 더 효율적입니다.
i <- 1
mylist <- c()
while (i<10) {
mylist[[(length(mylist) + 1)]] <- i*3
i <- i+1
}
cat(mylist)
출력:
3 6 9 12 15 18 21 24 27
목록에 대한 상한 설정
루프가 반복되는 횟수를 미리 알고 있다면 요소 목록을 늘리는 대신 고정 길이의 벡터를 정의하고 모든 요소를 보유하는 데 사용할 수 있습니다. 예를 들어 루프가 10,000 번 반복된다는 것을 알고 있다면 다음과 같이 벡터를 초기화 할 수 있습니다.
mylist <- vector("list", 10000)
그런 다음 for
루프를 사용하고 색인별로 각 요소의 값을 설정할 수 있습니다.
i <- 1
for (i in 1:10000) {
mylist[[i]] <- i*3
}
반복 횟수를 모르지만 상한이있는 경우이 상한으로 벡터를 정의 할 수 있습니다. 나중에 루프 실행이 완료되면 널이 아닌 요소 만 선택할 수 있습니다. 예를 들어 루프가 10,000 회 이상 반복되지 않는다는 것을 알고 있다면 요소를 모두 사용하지 않더라도 10,000 개의 요소로 벡터를 초기화 할 수 있습니다.