不适用于我自己的变量

时间:2018-07-25 02:29:26

标签: r

我在这里创建了这个自定义功能:

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

1 个答案:

答案 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)