通常人們會已經有了一個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