从列表中取回数据帧? [英] R - lapply - getting data frames back out of lists?

查看:9
本文介绍了从列表中取回数据帧?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我和这个人有相同的问题:returning from list to data.frame after lapply

虽然他们解决了他的具体问题,但实际上没有人回答他最初提出的如何从列表中提取数据帧的问题。

我有一个数据框列表:

dfPreList = list(yearlyFunding, yearlyPubs, yearlyAuthors)

并且我想对它们进行筛选/替换等操作。

所以我的函数是:

DoThis = function(x){
  filter(x, year >=2015 & year <=2018) %>% 
  replace(is.na(.), 0) %>%
  adorn_totals("row")

}

我使用lApply对它们全部运行函数,如下所示:

a = lapply(dfPreList, DoThis) 

正如另一个帖子所说,这些数据帧现在被困在这个列表(a)中,我需要for loop来取出它们,这不是正确的方法。

这是我当前的工作方式,将该函数应用于数据帧,然后将其取出:

dfPreList = list(yearlyFunding, yearlyPubs, yearlyAuthors)
dfPreListstr= list('yearlyFunding', 'yearlyPubs', 'yearlyAuthors')

DoThis = function(x){
  filter(x, year >=2015 & year <=2018) %>% 
  replace(is.na(.), 0) %>%
  adorn_totals("row")

}

a = lapply(dfPreList, DoThis)

for( i in seq_along(dfPreList)){

  assign(dfPreListstr[[i]], as.data.frame(a[i]))

}
有没有一种方法可以在不依赖数据帧的for loops和字符串名称的情况下实现这一点?即带有lapply

的一行程序

非常感谢您的帮助

推荐答案

您可以将名称分配给列表,然后使用list2env

dfPreList = list(yearlyFunding, yearlyPubs, yearlyAuthors)
a = lapply(dfPreList, DoThis) 
names(a) <- c('yearlyFunding', 'yearlyPubs', 'yearlyAuthors')
list2env(a, .GlobalEnv)

这篇关于从列表中取回数据帧?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆