我需要创建一个空的数据框,并设置列以便稍后添加值。
我的代码:
df <- data.frame()
varNames <- c("rho", "lambda", "counts")
colnames(df)<- varNames
df['$rho'] <- NA
df["lambda"] <- NA
df["counts"] <- NA
但是
在 [<-.data.frame(*tmp*, "$rho", value = NA) : 替换只有1行,而数据为0
发生错误。
df1 <- data.frame(rho = numeric(), lambda = numeric(), counts = numeric())
rbind(df1, list(rho = NA, lambda = NA, counts = NA))
# rho lambda counts
#1 NA NA NA
list
会很有用。lst <- setNames(vector("list", 3), varNames)
lst[['rho']] <- NA
lst[['lambda']] <- NA
lst
#$rho
#[1] NA
#$lambda
#[1] NA
#$counts
#NULL
因为list
元素的长度可以不同,而data.frame
是具有等长列的list
。一旦分配完成且长度相等,则使用data.frame(lst)
将其转换为data.frame
并将其写回文件。
rbind
一起使用,但不能与我在问题中添加3个值为NA
的列的代码一起使用。你知道为什么会发生这种情况吗?我正在尝试创建一个数据框并附加R输出,最终写入Excel表格。这就是为什么我要指定这些列的原因。 - Lumoslist
代替data.frame
,因为data.frame
是一个具有等长列的list
。 - akrun
data.frame(rho = numeric(), lambda = numeric(), counts = numeric())
。 - akrun*apply
替换forloop
并将结果保存在列表中,这样我们就不需要在 forloop 中创建以上空的 dataframe,并在其中“增长”。 - zx8754