2012-10-26 48 views
2

如果此問題看起來很簡單,那麼我很抱歉。我有點不清楚,如果它有可能/如何爲循環使用的數據幀的列表中R.使用for循環或lapply遍歷R中列表中的不同數據幀

使用

我是一個更大的數據幀的子集dataframes:

billysuzy <- subset(userlist,user1 %in% c("billy","suzy")) 
joefrank<- subset(userlist,user1 %in% c("joe","frank")) 
georgelenny <- subset(userlist,user1 %in% c("george","lenny")) 

我想循環查找每個子集的相同變量(時間和simscore)的相關值。

cor(time, simscore) 

但是,我很不確定如何構造這樣一個for循環,並且不確定如何構造一個函數來連接和分離lapply。

我在想:

somelist <- list(billysuzy, joefrank, georgelenny) 

與lapply:

corz <- lapply(somelist, function(df) detach(), attach(df),cor(time, simscore)) 
lapply(corz, print)  

或爲:

for (i in 1:length(somelist)){ 
     detach() 
    attach(somelist[i]) 
    cor(time, simscore) 
    } 

我得罪任何人的[R情面道歉,或者,如果看起來像兩個問題 - 答案是描述如何做一件事的任何東西,即通過列表中的dfs循環並找到t這裏是corr值。

回答

3

我真的很推薦避免attachdetach

你可以嘗試這樣的事情

corz <- lapply(somelist, function(df) cor_time_sim = cor(df$time, df$simscore)) 

或者

corz <- lapply(somelist, function(DF) {with(DF, corst <- cor(time, simscore))}) 

或者

corz <- lapply(somelist, with, corst <- cor(time, simscore)) 
+0

設置變量cor_time_sim導致該錯誤消息:「錯誤的eval(表達式,ENVIR, enclos):參數丟失,沒有默認值「。我放棄了它,只是用了cor,而且效果很好。謝謝。 – Donnied

+1

看到我的兩個編輯,這是由於使用'='而不是'<-'來分配的。 – mnel