通常人们会已经有了一个data.frame(称之为df
),并通过简单地调用df$newColName = values
或df[,newColNames] = frame_of_values
添加帧。
你的问题表明你正在将你的值的创建与将它们放入数据框(我不推荐)分离。但是,如果你真的想从零排零山坳帧开始这里有一些选择:
colnamesToAdd = LETTERS[1:4]
test.dim = data.frame( matrix(rep(NA),length(colnamesToAdd),nrow=1) )
colnames(test.dim) = colnamesToAdd
test.dim = test.dim[-1,]
另一种选择:
colnamesToAdd = LETTERS[1:4]
test.dim = data.frame("USELESS" = NA)
test.dim[,colnamesToAdd] = NA
test.dim = test.dim[-1,-1]
如果你正在寻找一个平均添加到您的表格和重复对于每个因素:
library(data.table);
test.dim = data.table("FACTOR" = sample(letters[1:4],100,replace=TRUE), "VALUE" = runif(100), "MEAN" = NA)
means = test.dim[,list(AVG=mean(VALUE)),by="FACTOR"]
# without data.table: by(test.dim$VALUE, test.dim$FACTOR, mean)
for(x in 1:nrow(means)) { test.dim$MEAN[test.dim$FACTOR==means$FACTOR[x]] = means$AVG[x] } # normally I would use the foreach package instead of this last for loop
请适当地格式化您的代码。对象'x.data'从哪里来? –
可能有更好的方法来做你需要做的事情。你能用文字和一个小例子来解释你实际上想要解决什么问题。 – A5C1D2H2I1M1N2O1R2T1
对Ananda来说:事实上,我有两个表,我从第一个表中提取一些信息,然后使用get选择第二个表中的列,然后计算所选块的平均值。最后,我使用第一个表中获得的信息作为列名创建一个表的平均值。我希望你很清楚。这就是为什么我创建一个空白data.frame,然后按列添加值列 – boyang