使用不同的DF重复计算

时间:2019-06-25 06:10:01

标签: r

我大约有10个DF,并且希望对它们全部执行以下计算,然后有10个新DF。

我已经能够将此代码用于1个DF,但我不想复制代码并更改名称10次,而是想知道是否有方法可以这样做。理想情况下,我最终得到了1个DF和10个不同的列,但对任何事情都很满意

我要进行的计算是:

temp <- merge (x=DF1, y=temp1, by = c("name"), all.x= TRUE) 
asset_column <-grep("^Assets_", names(DF1))
return_column <-grep("^Return_", names(DF1))
OutputDF <- 
     stack(colSums(t(t(temp[asset_column])/colSums(temp[asset_column], 
      na.rm=TRUE)) * US_only[return_column],na.rm =TRUE))
OutputDF['values'] = OutputDF['values']/100

1 个答案:

答案 0 :(得分:2)

如果这些是在list中可重复的计算,则用list遍历lapply并执行相同的代码,从匿名函数调用中指定第一个数据集({{1 }})

function(x) x

这里,输出也是out <- lapply(lst1, function(x) { temp <- merge (x, y=temp1, by = c("name"), all.x= TRUE) asset_column <-grep("^Assets_", names(x)) return_column <-grep("^Return_", names(x)) OutputDF <- stack(colSums(t(t(temp[asset_column])/colSums(temp[asset_column], na.rm=TRUE)) * US_only[return_column],na.rm =TRUE)) OutputDF['values'] = OutputDF['values']/100 OutputDF }) 中的list,可以原样保存在data.frame中,也可以用list提取