2017-07-04 1 views
1

4つのリストのリストを作成したいとします。最初の2つは手動で定義され、2つ目はlapplyの結果です。だから、具体的には、私は、これらの3つの項目があります。いくつかのリストといくつかのリストを結合するより読みやすい方法がRapplyによって返されました。

> list("a" = 1) 
> list("b" = 1) 
> lapply(1:2,FUN=function(i) { list("c"=i) } 

をそして私は、出力リストがあるように、それらを結合したい:私は次のように使用してそれを達成することができます

[[1]] 
[[1]]$a 
[1] 1 


[[2]] 
[[2]]$b 
[1] 1 


[[3]] 
[[3]]$c 
[1] 1 


[[4]] 
[[4]]$c 
[1] 2 

> unlist(recursive=FALSE, 
     list(
       list(list("a"=1),list("b"=1)), 
       lapply(1:2,FUN = function(i) { list("c"=i) }) 
      ) 
     ) 

しかし、このリストのビジネスリストは少し冗長であるようです。私はもちろん、これを行うための関数を書くことができることは知っていますが、よりクリーンなライナーがあるかどうか疑問です。あなたはそれに反対している場合は、「リストの事業のリストのリストが少し冗長なようだ」

答えて

3
c(list(list("a" = 1),list("b" = 1)),lapply(1:2,FUN=function(i) { list("c"=i) })) 
0

、あなたはリストの出力が詳細である、またはリストのコードが冗長であることを不満を抱いていますか?

どの部分がアトミックリストになり、どの部分がリストとして残る必要がありますか?これらのいずれかがあなたの懸念に対処していますか?

c(
    rep("a", 1), 
    rep("b", 1), 
    rep("c", 2) 
) 

rep(
    c("a", "b", "c"), 
    c(1 , 1 , 2) 
) 

どちら

は、アトミック文字ベクトル生成:

[1] "a" "b" "c" "c" 
+0

おかげで、残念ながら私は(私のコントロールに現在いない理由のために)質問で指定された正確なデータ構造に一致するように出力を必要としています。冗長なビジネスについての私のコメントは、リストのリストのリストを非再帰的にリストにした私自身の解決策に関するものでした – Patrick

関連する問題