首页 > 解决方案 > 将新行添加到具有列表类型列的数据框

问题描述

我想在数据框的特定列中每个单元格有多个元素。R-bloggers 上有一个注释,解释了如何使用列表进行操作:

> d <- data.frame(id=1:2)
> d$name <- list(c("Bond", "James"),c("Poppins", "Mary"))
> d
  id          name
1  1   Bond, James
2  2 Poppins, Mary

到目前为止,一切都很好。但现在我想在数据框中添加更多行。这是结果:

> d[nrow(d) + 1,] <- list(3, c("Hood", "Robin"))
Warning message:
In `[<-.data.frame`(`*tmp*`, nrow(d) + 1, , value = list(3, c("Hood",  :
  replacement element 2 has 2 rows to replace 1 rows
> d
  id          name
1  1   Bond, James
2  2 Poppins, Mary
3  3          Hood

向量的第二个元素被丢弃。如何说服 R 也将第二个元素添加到名称单元格中?

标签: rdataframe

解决方案


我们可以用add_row

library(tibble)
add_row(d, id = 3, name = list(c('Bond', 'Robbin')))
#  id          name
#1  1   Bond, James
#2  2 Poppins, Mary
#3  3  Bond, Robbin

关于分配下一行的方式,我们有一个list作为list第二列

d[nrow(d) + 1, ] <- list(3, list(c("Hood", "Robbin")))
d
#  id          name
#1  1   Bond, James
#2  2 Poppins, Mary
#3  3  Hood, Robbin

推荐阅读