Sé cómo agregar una columna de lista:
> 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
Esto funciona, pero no:
> 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
¿Por qué?
Además, ¿hay alguna forma de crear df(arriba) en una sola llamada a data.frame?

Ipara Inhibir Interperetation / Conversión de objetos parece un poco demasiado corto :)class()? pI(iris) -> i; i %>% class() 3 [1] "AsIs" "data.frame". ej. (devuelve la clase AsIs)Si está trabajando con
data.tables, puede evitar la llamada aI()library(data.table) # the following works as intended data.table(a=1:3,b=list(1,1:2,1:3)) a b 1: 1 1 2: 2 1,2 3: 3 1,2,3fuente
data.tablepor un amplio margendata_frames (llamados diversamentetibbles,tbl_df,tbl) de forma nativa apoyan la creación de columnas de la lista utilizando eldata_frameconstructor. Para usarlos, cargue una de las muchas bibliotecas con ellos, comotibble,dplyrotidyverse.> data_frame(abc = letters[1:3], lst = list(1:3, 1:3, 1:3)) # A tibble: 3 × 2 abc lst <chr> <list> 1 a <int [3]> 2 b <int [3]> 3 c <int [3]>En realidad, están
data.framesbajo el capó, pero algo modificados. Casi siempre se pueden utilizar normalmentedata.frames. La única excepción que he encontrado es que cuando las personas hacen controles de clase inapropiados, causan problemas:> #no problem > data.frame(x = 1:3, y = 1:3) %>% class [1] "data.frame" > data.frame(x = 1:3, y = 1:3) %>% class == "data.frame" [1] TRUE > #uh oh > data_frame(x = 1:3, y = 1:3) %>% class [1] "tbl_df" "tbl" "data.frame" > data_frame(x = 1:3, y = 1:3) %>% class == "data.frame" [1] FALSE FALSE TRUE > #dont use if with improper testing! > if(data_frame(x = 1:3, y = 1:3) %>% class == "data.frame") "something" Warning message: In if (data_frame(x = 1:3, y = 1:3) %>% class == "data.frame") "something" : the condition has length > 1 and only the first element will be used > #proper > data_frame(x = 1:3, y = 1:3) %>% inherits("data.frame") [1] TRUERecomiendo leer sobre ellos en R 4 Data Science (gratis).
fuente