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