リスト変数を指定すると、各要素の位置のデータフレームが必要です。シンプルなネストされていないリストの場合、それはかなり簡単です。リスト内の要素の位置を取得する方法は?
たとえば、次の文字ベクタのリストがあります。
l <- replicate(
10,
sample(letters, rpois(1, 2), replace = TRUE),
simplify = FALSE
)
l
[[1]]
[1] "m"
[[2]]
[1] "o" "r"
[[3]]
[1] "g" "m"
# etc.
は位置のデータフレームを取得するには、私が使用することができます。
d <- data.frame(
value = unlist(l),
i = rep(seq_len(length(l)), lengths(l)),
j = rapply(l, seq_along, how = "unlist"),
stringsAsFactors = FALSE
)
head(d)
## value i j
## 1 m 1 1
## 2 o 2 1
## 3 r 2 2
## 4 g 3 1
## 5 m 3 2
## 6 w 4 1
トリッキーネストされたリストを考えると、例えば:
l2 <- list(
"a",
list("b", list("c", c("d", "a", "e"))),
character(),
c("e", "b"),
list("e"),
list(list(list("f")))
)
こちら簡単に一般化してはいけません。
私はこの例のために期待する出力は次のとおりです。
data.frame(
value = c("a", "b", "c", "d", "a", "e", "e", "b", "e", "f"),
i1 = c(1, 2, 2, 2, 2, 2, 4, 4, 5, 6),
i2 = c(1, 1, 2, 2, 2, 2, 1, 2, 1, 1),
i3 = c(NA, 1, 1, 2, 2, 2, NA, NA, 1, 1),
i4 = c(NA, NA, 1, 1, 2, 3, NA, NA, NA, 1),
i5 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 1)
)
どのように私は、ネストされたリストのための位置のデータフレームを得るのですか?
'l2'の結果として6列(値+ 5レベルのネスト)のdata.frameが必要ですか? –
これは基本的に 'melt(l2)' + 'rapply(l2、seq_along)'の組み合わせのようです。質問は簡単にそれらの2つを組み合わせる方法です:-) – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto、それは信じられないほど単純です - あなたが回答 –