【问题标题】:use a for loop or lapply to iterate through different dataframes in a list in R使用 for 循环或 lapply 遍历 R 列表中的不同数据帧
【发布时间】:2012-10-16 06:39:58
【问题描述】:

如果这个问题看起来很初级,我深表歉意。我有点不清楚是否可能/如何在 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"))

我想循环查找每个子集的相同变量(时间和模拟分数)的相关值。

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:

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

我很抱歉冒犯了任何人的 R 敏感性,或者如果这似乎是两个问题 - 答案是任何描述如何做一件事的问题,即循环遍历列表中的 dfs 并找到 corr 值。

【问题讨论】:

    标签: r list for-loop lapply


    【解决方案1】:

    我真的建议避免使用 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))
    

    【讨论】:

    • 设置变量 cor_time_sim 导致错误消息:“eval(expr, envir, enclos) 中的错误:缺少参数,没有默认值”。我把它扔了,只用了cor,效果很好。谢谢。
    • 查看我的两个编辑,这是由于使用= 而不是&lt;- 进行分配。
    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2017-12-14
    相关资源
    最近更新 更多