首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串作为R内部映射中的函数参数

字符串作为R内部映射中的函数参数
EN

Stack Overflow用户
提问于 2021-03-12 03:23:41
回答 1查看 51关注 0票数 0

问:我有以下R代码(如下所示):它不能与"my.list“中的"x”= "ARIMA“和"ETS”一起工作。这就是问题所在:"fabletools::model(arima_auto = fable::ARIMA(Trips))“=它可以工作,但是这个:"fabletools::model(arima_auto = fable::x(Trips))”不起作用。有谁知道我的问题的解决方案。这在R中是可能的吗?

代码语言:javascript
复制
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)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 03:42:01

当您调用x(Trips)时,您的x是字符向量"ARIMA"。R不知道[character vector](Trips)是什么意思。这就像试图调用"Alice"(y),并期望R将"Alice"视为一个函数,尽管它显然不是一个函数。

您需要的是一种让R将字符串"ARIMA"交换为其相应函数的方法。这就是match.fun的用途。试着这样做:

代码语言:javascript
复制
working<-match.fun(x)
fabletools::model(arima_auto = working(Trips))

请注意,与最初的方法不同,我们不需要为此使用任何名称空间。好的做法是找到一种方法来做到这一点,例如working<-get(x,envir = environment(fable)),但我们这里不需要它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66589167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档