【问题标题】:add new row to data frame with list type column将新行添加到具有列表类型列的数据框
【发布时间】:2018-12-14 10:22:55
【问题描述】:

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

【问题讨论】:

    标签: r dataframe


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2023-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多