我试图从t-1的值和增长率计算出几个国家在t期间的gdp值,为此我创建了这个for循环,它适用于单个国家:
growth_function = function(x, value, growth){
for (i in 2:length(x)) {
value[i] <- (value[[i-1]])*(1+growth[[i]])
}
}
为了将它应用到所有国家,我在 Dataframe 上使用split(),并创建了一个包含所有国家的列表。
projections_list <- lapply(projections_list, growth_function('iso', 'mnninc', 'gdp_growth'))
但我有以下消息错误:
Error in growth[[i]] : subscript out of bounds
你可以在下面的image中找到我的列表中的一个元素。所有元素的构造都是一样的。如果有人能给予一个提示来找到解决方案,我将非常感激。
1条答案
按热度按时间ni65a41a1#
当尝试使用字符串
value
和growth
访问x
的列时,需要在函数中使用x[[value]]
和x[[growth]]
。也许可以像这样重写函数:
并在
projections_list
的每个元素上调用此函数,如下所示:请注意,因为您在函数中从
2:length(x)
开始循环,并赋值给x[[value]][i]
,所以x[[value]]
的最后一个元素将是NA
。最后,我假设您理解这不会更改projections_list
中每个 Dataframe 中mnnic
列的实际值。