我大约有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
答案 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
提取