3

次のように、エントリとしてリストを含むリストがあります。

A <- list(scores1 = list(a = "a", b = "b"), scores2 = list(a = "c", b = "d"), scores3 = list(a = "e", b = "f"))
B <- list(scores1 = list(a = "aa", b = "bb"), scores2 = list(a = "cc", b = "dd"), scores3 = list(a = "ee", b = "ff"))
C <- list(scores1 = list(a = "aaa", b = "bbb"), scores2 = list(a = "ccc", b = "ddd"), scores3 = list(a = "eee", b = "fff"))
ABC <- list(A, B, C)

次のように要素scores1を取得できます。

a1 <- lapply(ABC, "[", "scores1")

それは私に

[[1]]
[[1]]$scores1
[[1]]$scores1$a
[1] "a"

[[1]]$scores1$b
[1] "b"

[[2]]
[[2]]$scores1
[[2]]$scores1$a
[1] "aa"

[[2]]$scores1$b
[1] "bb"

[[3]]
[[3]]$scores1
[[3]]$scores1$a
[1] "aaa"

[[3]]$scores1$b
[1] "bbb"

さて、私が本当に欲しいのはオブジェクト「a」にあるものなので、私は私に与える呼び出しを探しています

"a"
"aa"
"aaa"

私はこれをループで行うことができますが、それはかなり非効率的なようです。これらの値を抽出するにはどうすればよいですか?私が試してみました

lapply(lapply(ABC, "[", "scores1"), "[", "a")

しかし、それは戻るだけです

[[1]]
[[1]]$<NA>
NULL

[[2]]
[[2]]$<NA>
NULL

[[3]]
[[3]]$<NA>
NULL

これを行う正しい方法は何ですか?

4

1 に答える 1

4

「[」と「[[」の違いにつまずいたと思います。「[[」を使用すると、サブリストではなく「scores1」でインデックス付けされた要素のコンテンツが得られます。次に、「a」という名前の要素のコンテンツにアクセスできます。

a1 <- lapply(ABC, "[[", "scores1")
sapply(a1, "[[", "a")
#[1] "a"   "aa"  "aaa"
于 2012-06-23T02:37:19.123 に答える