2014-04-29 2 views
1

같은 길이의 독립 벡터 모음이 있다고 가정합니다. 예를 들어,두 벡터를 벡터 목록으로 바꾸기

x <- 1:10 
y <- rep(NA, 10) 

와 I는 각 요소의 길이가 있었다 독립 벡터의 수가 인 벡터 인 길이가 (주어진 예 10)이 공통 길이리스트로 좌회전하려는 주어진. 내 예에서, output 출력 개체를 가정 할, 나는

> str(output) 
List of 10 
$ : num [1:2] 1 NA 
... 

> output 
[[1]] 
[1] 1 NA 
... 

그 일의 일반적인 방법은 무엇을 기대?

답변

4

사용 mapplyc :

mapply(c, x, y, SIMPLIFY=FALSE) 

[[1]] 
[1] 1 NA 

[[2]] 
[1] 2 NA 

..<cropped>.. 

[[10]] 
[1] 10 NA 
+1

의 위치에 기초하여,리스트로 동등 길이 벡터의 임의의 수를 압축 할 수있는 해결책이'지도'은 설탕 (mapply '위한 ... , SIMPLIFY = FALSE)'. – flodel

1

또 다른 옵션 :

split(cbind(x, y), seq(length(x))) 

또는 :

split(c(x, y), seq(length(x))) 

심지어는 (x이 예에서와 같이 중복 값이없는 가정) :

여기
split(c(x, y), x) 
1

515,는 소자

merge_by_pos <- function(...){ 
    dotlist = list(...) 
    lapply(seq_along(dotlist), function(i){ 
    Reduce('c', lapply(dotlist, '[[', i)) 
    }) 
} 
x <- 1:10 
y <- rep(NA, 10) 
z <- 21:30 

merge_by_pos(x, y, z)