0

質問: 次の R コード (以下) があります: "my.list" の "x" = "ARIMA" および "ETS" では機能しませんでした。それが問題です: "fabletools::model(arima_auto = fable::ARIMA(Trips))" = 動作しますが、これ: "fabletools::model(arima_auto = fable::x(Trips))" は機能しませんでした。誰も私の問題の解決策を知っていますか? Rでも可能ですか?

library(tidyverse)
library(fable)
library(fabletools)
library(tsibble)

tourism <- tsibble::tourism 

my.list <- list("ARIMA","ETS")

my.list[[1]] ## "ARIMA"
my.list[[2]] ## "ETS"

f_test <- function(.df1,.n){

  x <- .df1[[.n]][[1]] ### 1) "ARIMA", "ETS"
  print(x)
  
  fit <- tourism %>%
    dplyr::filter(Region == "Adelaide") %>%
    #fabletools::model(arima_auto = fable::ARIMA(Trips)) ### it works
    fabletools::model(arima_auto = fable::x(Trips)) ### didn't work
  
  assign("fit", fit, envir= globalenv())
} 

purrr::map(.x = seq(my.list), .f = ~(f_test(my.list, Counter <- .x)))
4

1 に答える 1

1

を呼び出しているときx(Trips)、 x は文字ベクトル"ARIMA"です。Rは[character vector](Trips)意味がわかりません。それは、Rが明らかに関数ではないにもかかわらず、 Rを呼び出して関数として"Alice"(y)扱うことを期待するようなものです。"Alice"

必要なのは、R が"ARIMA"対応する関数の文字列を交換する方法です。これがmatch.fun目的です。代わりにこれを試してください:

working<-match.fun(x)
fabletools::model(arima_auto = working(Trips))

元のアプローチとは異なり、これには名前空間を使用する必要がないことに注意してください。その方法を見つけることをお勧めしますが、working<-get(x,envir = environment(fable))ここでは必要ありませんでした。

于 2021-03-11T19:42:01.267 に答える