2011-04-27 7 views
25

기본 질문 : R에서는 목록을 만들고 나중에 벡터 요소로 채울 수 있습니까?정수형 벡터 목록을 만드는 방법 R

l <- list() 
l[1] <- c(1,2,3) 

이렇게하면 "대체 할 항목 수는 대체 길이의 배수가 아닙니다."라는 오류 메시지가 나타나 R이 벡터를 언팩하려고합니다. 지금까지 작업 한 유일한 방법은 목록을 만들 때 벡터를 추가하는 것입니다.

l <- list(c(1,2,3), c(4,5,6)) 

답변

31

같은 것을 사용할 수 있도록 :

Indexing by ‘[’ is similar to atomic vectors and selects a list of 
the specified element(s). 

Both ‘[[’ and ‘$’ select a single element of the list. The main 
difference is that ‘$’ does not allow computed indices, whereas 
‘[[’ does. ‘x$name’ is equivalent to ‘x[["name", exact = 
FALSE]]’. Also, the partial matching behavior of ‘[[’ can be 
controlled using the ‘exact’ argument. 

기본적으로,리스트를 들면 [ 하나 개 이상의 요소를 선택하므로 교체리스트 (다른 ​​실시 예와 벡터)이어야한다. 여기 목록에 [을 사용하는 방법의 예

l <- list(c(1,2,3), c(4,5,6)) 
l[1] <- list(1:2) 
l[1:2] <- list(1:3,4:5) 

만, 하나 개의 요소를 교체하는 대신 [[을 사용합니다.

l[[1]] <- 1:3 
25

사용 [[1]]

l[[1]] <- c(1,2,3) 
l[[2]] <- 1:4 

그래서 같이. 또한 사전 할당이 훨씬 더 효율적이라고 기억 당신이 당신의 목록이 될 것입니다 얼마나 오래 알고 있다면, (섹션 "재귀 (목록과 같은) 객체"에서) ?"["에 따르면

l <- vector(mode="list", length=N)