如何在r中数据框为空时向列添加值

时间:2016-03-22 21:42:52

标签: r dataframe

我有数据框,我必须初始化为空数据帧。 现在我只有列可用,我想将它添加到空数据框。我怎么能这样做?我不确定提前列的长度是多少。

实施例

df = data.frame(a= NA, b = NA, col1= NA)
....
nrow(col1) # Here I will know length of column, and I only have one column available here.
df$col1 <- col1

错误如下:

Error in `$<-.data.frame`(`*tmp*`, "a", value = c("1",  : 

替换有5行,数据有1个

任何帮助都会很棒

3 个答案:

答案 0 :(得分:3)

使用cbind

df = data.frame(a= NA, b = NA)

col1 <- c(1,2,3,4,5)
df <- cbind(df, col1)

#    a  b col1
# 1 NA NA    1
# 2 NA NA    2
# 3 NA NA    3
# 4 NA NA    4
# 5 NA NA    5

完成修改后,您仍然可以使用cbind,但您需要先删除现有列(或在cbind之后处理重复列)

cbind(df[, 1:2], col1)

## or if you don't know the column indeces
## cbind(df[, !names(df) %in% c("col1")], col1)

答案 1 :(得分:2)

列表的一个小解决方法:

l      <- list(a=NA, b=NA, col1=NA)
col1   <- c(1,2,3)
l$col1 <- col1
df     <- as.data.frame(l)

答案 2 :(得分:0)

我喜欢Symbolix和maRtin提供的两个答案,我已经完成了自己的黑客攻击。我的黑客如下。

df[1:length(a),"a"] = a

但是,我不确定,这种方法在时间方面是有效的。什么是时间的大概念