使用列表类型列将新行添加到数据框

时间:2018-12-14 10:22:55

标签: r dataframe

我想在数据帧的特定列中每个单元具有多个元素。 a note at 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将第二个元素也添加到名称单元中?

1 个答案:

答案 0 :(得分:1)

我们可以使用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