Я ищу способ надежно привязать структуру списка к data.frame
или tibble
, сохраняя при этом один или несколько столбцов в качестве столбцов списка. Рассмотрим следующую структуру списка:
d = data.frame(x = 1:10, y = 1.5*(1:10) + rnorm(10))
ex = list(label = "A", number = 1L, model = lm(y ~ x, data = d))
Это не работает так, как задумано:
lapply(ex, as_data_frame) %>% bind_rows()
Потому что объект lm
в столбце «модель» векторизуется при преобразовании. Однако обертывание модели в list
дает ожидаемый результат:
ex2 = list(label = "A", number = 1L, model = list(lm(y ~ x, data = d)))
as_data_frame(ex2)
К сожалению, у меня есть вариант использования, когда я заранее не знаю, является ли данный столбец списком или нет. Я работаю с функцией, которая выводит что-то вроде этого:
ex3 = list(
list(label = "A", number = 1L, model = lm(y ~ x, data = d)),
list(label = "B", number = 1L, model = lm(y ~ x + 0, data = d))
)
# won't work properly
lapply(ex3, as_data_frame) %>% bind_rows()
Есть ли способ предотвратить векторизацию объекта data_frame
при преобразовании в tibble
? Если нет, то какой альтернативный подход я мог бы использовать?