R中的Mapply回收

时间:2019-04-15 01:39:37

标签: r mapply

我编写了一个函数来进行Arima建模,输出一个系数和p值表,对p值进行排名,并返回一个无显着变量的arima模型。

该函数需要两个输入,一个时间序列对象和一个数据框。

代码如下:

  backward_stepwise<-function(x, y){
    repeat{
       arima_result<-auto_arima(x)
       arima_pvals<-p_calc(arima_result)
       arima_outputs<-run_outputs(arima_result, arima_pvals)
       arima_ranked<-rank_pval(arima_outputs)
       # temporary fix to .xreg being added to term names
       for(i in 1:length(arima_ranked$term)){
       arima_ranked$term<-gsub(arima_ranked$term, pattern = 'xreg.', 
       replacement = "")
     }
       remove_num_one<-remove_one(arima_ranked)
        # removed the cond_select function so that y and x write over 
        themselves
        y<-subset(y, select = colnames(y) != remove_num_one) 
        x<-as.ts(y)

    if(min(arima_ranked$rank, na.rm = TRUE) != 1){
    break

    }
  }

  return(arima_result)
 }

我将其应用于时间序列对象列表和数据帧列表

时间序列列表示例

CAN_V98
ADE_U91
ADE_V95

数据帧示例

CAN_V98
ADE_U91
ADE_V95

当我将其应用于mapply或for循环时,这两种方法都是从同一索引获取值的方法。也就是说,将向后逐步执行的功能剥离CAN_V98的变量,并继续使用数据帧列表中的CAN_V98,或者在执行第一个循环后,它将使用数据帧列表中的第二个数据帧。

# Application via for loop
for(i in mkt_grd){
x<-list_ts_actual[[i]]
y<-list_df_actual[[i]]
ts_outputs[[i]]<-backward_stepwise(x, y) 
}

# Application via mapply
ts_outputs1<-mcmapply(backward_stepwise, list_ts_actual, 
list_df_actual,SIMPLIFY = FALSE)

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

def frequency(): f = open('Loto4.txt', "r") l = [] for line in f: line = line.strip('\n') start = line.find("[") end = line.find("]") line = line[start + 1:end] l.extend([int(i) for i in line.split(',')]) print(line) print(l) frequency() 不能像嵌入式for循环那样工作。可以这么说,它不会遍历每个mapply的每个j

i

如您所见,它是否并行进行迭代,如果列表y的长度较短,它将回收,即,

mapply(function(x, y){cat("x = ", x, " y = ", y, "\n")},
       x = 1:5, y = 1:5)

x =  1  y =  1 
x =  2  y =  2 
x =  3  y =  3 
x =  4  y =  4 
x =  5  y =  5