1. ホーム
  2. r

[解決済み] 列をリストとするdata.frameの作成

2023-04-12 07:04:37

質問

リストカラムを追加する方法は知っています。

> df <- data.frame(a=1:3)
> df$b <- list(1:1, 1:2, 1:3)
> df
  a       b
1 1       1
2 2    1, 2
3 3 1, 2, 3

これは動作しますが、そうではありません。

> df <- data.frame(a=1:3, b=list(1:1, 1:2, 1:3))
Error in data.frame(1L, 1:2, 1:3, check.names = FALSE, stringsAsFactors = TRUE) : 
  arguments imply differing number of rows: 1, 2, 3

どうして?

また df (上記) を一回の呼び出しで data.frame ?

どのように解決するのですか?

少しわかりにくいですが ?data.frame :

<ブロッククオート

リストやデータフレーム、行列が 'data.frame' に渡された場合、各構成要素や列が個別の引数として渡されたのと同じことになります。 各要素や列が個別の引数として渡された場合と同じです。 (ただし、クラス '"model.matrix"' の行列は例外です。 で保護されている行列は例外です. 'I' ).

(強調)です。

そこで

data.frame(a=1:3,b=I(list(1,1:2,1:3)))

は動作するようです。