将数据添加到空r data.frame

时间:2013-10-24 19:35:25

标签: r dataframe

在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?

1 个答案:

答案 0 :(得分:4)

可以将列添加到空data.frame,但为了匹配现有的data.frame的维度,指定的向量需要为零长度:

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

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