Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用使用magrittr forward管道的over ARMA模型进行循环_R_Magrittr - Fatal编程技术网

无法使用使用magrittr forward管道的over ARMA模型进行循环

无法使用使用magrittr forward管道的over ARMA模型进行循环,r,magrittr,R,Magrittr,我有下面的代码。 它看起来很简单,它只是在ARMA模型AR(1)、MA(0)和AR(1)MA(2)等的各种组合上循环 load.or.install <- function(package.names) { is.installed <- function(mypkg) is.element(mypkg, installed.packages()[, 1]) for (package.name in package.names) { if (!is.

我有下面的代码。 它看起来很简单,它只是在ARMA模型AR(1)、MA(0)和AR(1)MA(2)等的各种组合上循环

load.or.install <- function(package.names) {
    is.installed <- function(mypkg) is.element(mypkg, installed.packages()[, 1])

    for (package.name in package.names) {
        if (!is.installed(package.name)) {
            install.packages(package.name)
        }
        library(package.name, character.only = TRUE, quietly = TRUE, verbose = FALSE)
    }
}

load.or.install(c("tseries", "forecast", "ggplot2", "dplyr", "magrittr", "rdatamarket"))

max.p <- 8 #  maximum number of AR terms
max.q <- 7 #  maximum number of MA terms
    #import data 
ausgdp <- as.ts(dmseries("http://data.is/1jDQwpr")[, 1]) %>% log() %>% diff(difference = 1)


model.orders <- as.matrix(expand.grid(AR = 0:max.p, DIF = 0, MA = 0:max.q))
models <- list()
1:nrow(model.orders) %>% {
    models[[.]] <- Arima(ausgdp, order = model.orders[.,], include.constant = T, method = "ML")
}
如果我在循环外运行以下命令,它就会工作

Arima(ausgdp, order = model.orders[1,], include.constant = T, method = "ML")
一旦它与
model.orders[,]一起进入循环,它就会失败

如果您有任何帮助,我们将不胜感激。

请注意运行以下程序时会发生什么

1:nrow(model.orders)%%>%{length(.)}

实际上,您一次传递
1:nrow(model.orders)
中的所有元素,而不是逐个传递

您不是一次将
model.orders
分为一行,然后将其传递给
order
,而是一次获取所有行,提示出错

使用管道后的
lappy
,可以获得所需的结果

models <- 1:nrow(model.orders) %>% 
  lapply(., function(row_n){
    Arima(ausgdp, 
          order = as.vector(model.orders[row_n, ]), 
          include.constant = T, 
          method = "ML")
  })
型号%
lappy(,函数(第n行){
Arima(澳大利亚),
order=as.vector(model.orders[row_n,]),
include.constant=T,
方法=“ML”)
})

注意运行以下操作时会发生什么

1:nrow(model.orders)%%>%{length(.)}

实际上,您一次传递
1:nrow(model.orders)
中的所有元素,而不是逐个传递

您不是一次将
model.orders
分为一行,然后将其传递给
order
,而是一次获取所有行,提示出错

使用管道后的
lappy
,可以获得所需的结果

models <- 1:nrow(model.orders) %>% 
  lapply(., function(row_n){
    Arima(ausgdp, 
          order = as.vector(model.orders[row_n, ]), 
          include.constant = T, 
          method = "ML")
  })
型号%
lappy(,函数(第n行){
Arima(澳大利亚),
order=as.vector(model.orders[row_n,]),
include.constant=T,
方法=“ML”)
})