首页 文章

使用for循环或lapply迭代R中列表中的不同数据帧

提问于
浏览
2

如果这个问题看起来很简陋,我道歉 . 我有点不清楚它是否可能/如何使用带有R中数据帧列表的循环 .

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

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值 .

1 回答

  • 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))
    

相关问题