【发布时间】:2020-07-20 22:38:04
【问题描述】:
我有一个数据框 pif,其中包含有关某些投资基金的信息和一个列表 names,其中包含所述基金的名称(或简称为 pif >的变量名):
names
[1] mercury_stock vtb_bric ...
等等。
现在我需要计算一些基本信息。我想要的输出是包含每个基金收益的数据框,然后我使用cbind 将它们绑定在一起。
对于这个操作我已经有了循环功能:
i=c(1:1584)
pif<-cbind(i, pif)
for ( i in 2:1584)
{
d_mercury_stock[i] = (pif$mercury_stock[i] - pif$mercury_stock[i-1])/pif$mercury_stock[i-1]
d_vtb_bric[i] = (pif$vtb_bric[i] - pif$vtb_bric[i-1])/pif$vtb_bric[i-1]
...
}
yield<-cbind(d_mercury_stock, d_vtb_bric, ...)
它工作得很好,但是我需要手动执行这个函数来获得每个基金的结果——而且数据框有超过 30 个,这意味着我应该复制和粘贴相同的函数三十次。
最好的解决方案是运行我的函数的第二个循环,使用列表 names 的元素并以某种方式将每个变量插入其中。
不幸的是,我无法做到这一点,因为我对循环和重复功能比较陌生。我怀疑lapply/sapply 或自定义函数可能是这里的解决方案。
你有什么建议?
【问题讨论】:
-
您可以添加一个模拟 data.frame 以使代码可重现且更易于理解。