我在这里创建了这个自定义功能:
generate_portfolio <- function(price_list_w_returns, initial_AUM){
price_list_w_returns1 = lapply(price_list_w_returns, transform, USD_portfolio = initial_AUM*cum_returns )
}
其中initial_AUM是某人可以更改为所需数字的一种方式。
在这种情况下,USD_portfolio是我尝试创建的新列,而cum_returns是现有列。 price_list_w_returns是具有相似列和行的数据框的列表。
我得到的错误是:
Error in eval(substitute(list(...)), `_data`, parent.frame()) :
object 'initial_AUM' not found
答案 0 :(得分:0)
问题是lapply
中的lambda函数定义不完全正确。您正在尝试将未定义的参数传递给该函数。请在下面查看如何在generate_portfolio2
中解决该问题:
# simulate list of data.frames
price_list_w_returns <- replicate(10, data.frame(id = 1:10, cum_returns = abs(rnorm(10)/ 10)), simplify = FALSE)
str(price_list_w_returns)
## Not run:
generate_portfolio <- function(price_list_w_returns, initial_AUM){
price_list_w_returns1 = lapply(price_list_w_returns, transform, USD_portfolio = initial_AUM * cum_returns )
}
generate_portfolio(price_list_w_returns, 2)
## Error in eval(substitute(list(...)), `_data`, parent.frame()) :
## object 'initial_AUM' not found
## End(Not run)
generate_portfolio2 <- function(price_list_w_returns, initial_AUM){
lapply(price_list_w_returns, function(x) {
x$USD_portfolio = initial_AUM * x$cum_returns
x
})
}
generate_portfolio2(price_list_w_returns, 2)