3

在 R 中,如果我用一列制作 data.frame,我可以添加其他列

> data <- data.frame(n=c(1:4))
> data
  n
1 1
2 2
3 3
4 4
> data$n2 <- 2
> data
  n n2
1 1  2
2 2  2
3 3  2
4 4  2

但是,如果我创建一个空的 data.frame,我将无法添加新列

> data <- data.frame()
> data
data frame with 0 columns and 0 rows
> data$n2 <- 2
Error in `$<-.data.frame`(`*tmp*`, "n2", value = 2) : 
  replacement has 1 row, data has 0

为什么 ?如何将新列添加到空 data.frame ?

4

1 回答 1

4

可以向空的 data.frame 添加一列,但要匹配现有 data.frame 的尺寸,分配的向量需要长度为零:

data <- data.frame()
data$n2 <- numeric()
data
# [1] n2
# <0 rows> (or 0-length row.names)

(在您的第一个示例中,尽管分配的 RHS 上的值与现有列的长度不同,但它被“回收”以形成必要长度的列。当现有 data.frame 没有行时,但是,不能使用回收来使列长度匹配。)

于 2013-10-24T19:38:58.197 回答