我有数据框,我必须初始化为空数据帧。 现在我只有列可用,我想将它添加到空数据框。我怎么能这样做?我不确定提前列的长度是多少。
实施例
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个
任何帮助都会很棒
答案 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
但是,我不确定,这种方法在时间方面是有效的。什么是时间的大概念