首页 > 解决方案 > 如何使用单词(df中变量的标题)作为函数的输入?(r)

问题描述

假设我有这个作为我的数据框:

    library(fpp3)
    df <- prices

我想创建一个函数,在其中传递变量名称和我想预测的前进步数。这是我试过的功能,不起作用。(我在对时间序列进行交叉验证时使用了“选择”功能,但我不需要在此示例中包含该代码)

fc.function <- function(variable, steps) {

fit <- df %>%
  select(year, variable) %>%
  model(
    MEAN(variable)
  ) 

fit %>%
  forecast(h = steps)

}

例如,当我使用变量“铜”并且我预测提前 1 步时,我会收到错误消息。

fc.function("copper", 1)

Error in FUN(X[[i]], ...) : object 'variable' not found
Called from: FUN(X[[i]], ...)

我在这里查看了多个不同的答案,但除非我错过或误解了我可能拥有的解决方案,否则我找不到我的答案。

标签: rfunctionforecastingvariable-names

解决方案


您正在为您的函数提供字符值“铜”(而不是符号)。您可以在语句中sym使用 using转换为符号,然后取消引用。!!dplyr

fc.function <- function(variable, steps) {
  df %>%
    select(year, !!sym(variable)) %>%
    model(MEAN(!!sym(variable))) %>%
    forecast(h = steps)
}

推荐阅读