2017-11-14 8 views
1

私はNのリストにいくつかの同じ列名を持っています。ここでは、2つのリストとMWEです:R:ベクトルとスカラーを含むマージリスト

ls <- list() 
ls[[1]] <- list("a"=1:2, 
       "b"=20, 
       "c"=numeric(0)) 
names(ls[[1]]$a) <- c("a1", "a2") 

ls[[2]] <- list("a"=3:4, 
       "b"=30, 
       "c"=1:4, 
       "d"="f") 
names(ls[[2]]$a) <- c("a1", "a2") 

はそれがlsResは、以下の特性を有する結果リストlsRes、にこれらを可能マージです:

  1. lsRes$aは、最初に名前が付いている2つの要素を含み、 (名前Cと(A1は、A2))ベクター C(1,2)及び第二の名前ベクトルc(3,4) (名前を持つ(C(a1.a2)))
  2. lsRes$b
  3. は、2つを含んでいます最初の要素は20aです最初のNAである 2つの要素を含み、そして第二が "4

  4. lsRes$d:ND第30

  5. lsRes$c最初の数値である2つの要素を含み、(0)と第二は1でありますF」

を私はthisthisを見て、彼らは

答えて

1

たちはlistとしても出力を持っている必要がありますと仮定すると、別の例を説明し、我々共通namesを作成し、NA

nm1 <- unique(unlist(sapply(ls, names))) 
lsRes <- lapply(ls, function(x) {x[setdiff(nm1, names(x))] <- NA; x}) 
lengths(lsRes) 
#[1] 4 4 

にそれらが共通の名前のいずれかを割り当てない私たちはlist 4の要素を持っている必要がある場合は、transpose

library(purrr) 
lsRes %>% 
     transpose 
+0

感謝を使用しています。 'ls'と同じ' lsRes'ではありませんか? – N08

+1

@ N08私は 'd'の追加要素を持っています。あなたはリストの出力を望むか、他に何かをしたいですか? – akrun

+0

ありがとうございます。上記の4つの条件が満たされるようにリストをまとめてマージすることは可能ですか? – N08

関連する問題