8

リストのリストをdfに変換することについて、SOで多くの回答を読みました。しかし、私はそれらがすべて同じリスト (メインの大きなリスト内) の長さを持っていることに気付きました。別のケースがあります:

h1 <- list(USA = c(10,13,17,11), RUSSIA = NULL, BRAZIL = NULL,
  CHINA = c(11,11,10,8,12), TAIWAN = c(12,9,9,11,9,12,14), CHILE = NULL)

上記のリストh1をdata.frameに変換したい。私の予想される出力は、2 つの列 (country_name、list) を持つ data.frame である必要があります。このようなもの:

country_name, list
USA    [10, 13, 17, 11]
RUSSIA NULL
BRAZIL NULL
CHINA  [11, 11, 10, 8, 12]
TAIWAN [12, 9, 9, 11, 9, 12, 14]
CHILE  NULL

私は次のことをしましたが、うまくいきませんでした:

do.call(rbind, h1)

すべての行で列番号を同じに保とうとします。私はそれを望んでいません。そのような場合に ldply を使用する方法を確認したいと思います。どんな提案でも大歓迎です。

4

2 に答える 2

5

1 つの方法を次に示します。

R> as.data.frame(as.matrix(h1))
                            V1
USA             10, 13, 17, 11
RUSSIA                    NULL
BRAZIL                    NULL
CHINA        11, 11, 10, 8, 12
TAIWAN 12, 9, 9, 11, 9, 12, 14
CHILE                     NULL

R> as.data.frame(as.matrix(h1))['TAIWAN', ]
$TAIWAN
[1] 12  9  9 11  9 12 14
于 2012-10-13T18:33:16.240 に答える
4

リストをマトリックスに変換できます。マトリックスのすべての要素がリストになります。

d1 <- data.frame(country_name=names(h1), list=matrix(h1))

とはいえ、Rパラダイムに適合しないため、これを行うことはお勧めしません。ほとんどのR関数は、行列に1つのアトミックタイプの要素が含まれていることを前提としています。

于 2012-10-13T18:36:54.727 に答える