在for循环中更改函数的输入变量

Changing input variable of function in for loop

我有一个 for 循环,在每个循环中它执行一个函数。首先,我从目录中加载 .rda 文件,然后将加载的文件(数据帧)分别分配给 spreadind。我怎样才能做到这一点?请注意,加载后的变量名称在每个循环中都是不同的,即加载#1 时显示为 NS.ticker_list[j,2],#2 显示为 Forward.rate.ticker_list[j,2].

for(j in 1:nrow(ticker_list)){
  load(file = gsub(" ","",paste(ticker_list[j,2],"_NS.rda"))) #1
  load(file = gsub(" ","",paste(ticker_list[j,2],"_Forward.rda"))) #2
  p <- arima.auto.fun(spread, ind, maturity_list, lag = 1)
}

您可以将每个文件加载到新环境中,将环境转换为列表对象,然后将列表中的第一个(也是唯一一个)对象分配给 spreadind 变量.您没有提供可重现的示例,因此以下是一个粗略的猜测。我还删除了 gsub 似乎不必要的使用,并将其替换为更简单的 paste0.

for(j in 1:nrow(ticker_list)){
  NS_env <- new.env()
  Forward_env <- new.env()
  
  load(file = paste0(ticker_list[j,2],"_NS.rda"), envir = NS_env) #1
  load(file = paste0(ticker_list[j,2],"_Forward.rda"), envir = Forward_env) #2
  
  NS_list <- as.list(NS_env)
  Forward_list <- as.list(Forward_env)
  
  spread <- NS_list[[1]]
  ind <- Forward_list[[1]]
  
  p <- arima.auto.fun(spread, ind, maturity_list, lag = 1)
}