1
我嘗試計算R中不同組的不同組的列方法,並且創建包含不同分組的兩列。在一個函數內循環並自動創建對象R
# create a test df
df.abcd.2<-data.frame(Grouping1=c("a","f","a","d","d","f","a"),Grouping2=c("y","y","z","z","x","x","q"),Var1=sample(1:7),Var2=sample(1:7),Var3=rnorm(1:7))
df.abcd.2
現在,我創建了一個循環與分配,lapply,分裂和colMeans得到我的結果,並存儲在不同勢DFS。循環工作正常。
#Loop to create the colmeans and store them in dataframes
for (i in 1:2){
nam <- paste("RRRRRR",deparse(i), sep=".")
assign(nam, as.data.frame(
lapply(
split(df.abcd.2[,3:5], df.abcd.2[,i]), colMeans)
)
)
}
所以,現在我想創建一個函數來應用此方法在不同的數據框上。我學嘗試是這樣的:
# 1. function to calculate colMeans for diffrent groups
# df= desired datatframe,
# a=starting column: beginning of the columns that contain the groups, b= end of columns that contain the groups
# c=startinc column: beginning of columns to be analized, d=end of columns do be analized
function.split.colMeans<-function(df,a,b,c,d)
{for (i in a:b){
nam <- paste("OOOOO",deparse(i), sep=".")
assign(nam, as.data.frame(
lapply(
split(df[,c:d], df[,i]), colMeans)
)
)
}
}
#test the function
function.split.colMeans(df.abcd.2,1,2,3,5)
所以,當我測試這個功能,我沒有得到一個錯誤信息,也不結果...誰能幫助我,好嗎?
你確定你真的想把結果存儲在不同的對象嗎?我在這裏的兩分錢將是做所有事情。 –
@RomanLuštrik。我理解你是否正確,你會編寫一個循環來將所有結果存儲在一個列表中?我試圖遵循你的建議,並使用plyr軟件包中的dlply。所以我的函數看起來像'function.list <-function(x,a,b){for(i in a:b){dlply(x,。(x [,i]),colwise(mean))}} '。但不幸的是,它不能用於循環。你能提供更多的信息嗎? – Joschi