2

如果这个问题看起来很初级,我深表歉意。我有点不清楚是否可能/如何在 R 中使用带有数据帧列表的 for 循环。

我的数据框是更大数据框的子集:

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 并找到那里的 corr 值。

4

1 回答 1

3

我真的建议避免attachand detach

你可以试试这样的

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))
于 2012-10-26T01:06:33.860 回答