Create a data.frame where a column is a list

dataframe, list, r

Solution

Slightly obscurely, from `?data.frame`:

If a list or data frame or matrix is passed to ‘data.frame’ it is as if each component or column had been passed as a separate argument (except for matrices of class ‘"model.matrix"’ and those protected by ‘I’).

(emphasis added).

So

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

seems to work.

Problem

I know how to add a list column: ``` > 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 ``` This works, but not: ``` > 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 ``` Why? Also, is there a way to create `df` (above) in a single call to `data.frame`?

Original source