【发布时间】:2020-05-21 09:27:37
【问题描述】:
我和这个人有同样的问题: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 和数据帧的字符串名称? IE。与lapply 的单线?
非常感谢您的帮助
【问题讨论】: