问题描述
假设我有这个作为我的数据框:
library(fpp3)
df <- prices
我想创建一个函数,在其中传入变量名称和我想预测的前进步数。这是我尝试过的功能,它不起作用。 (我在对时间序列进行交叉验证时使用了“选择”函数,但我不需要在本示例中包含该代码)
fc.function <- function(variable,steps) {
fit <- df %>%
select(year,variable) %>%
model(
MEAN(variable)
)
fit %>%
forecast(h = steps)
}
例如,当我使用变量 'copper' 并且我预测提前 1 步时,我得到一个错误。
fc.function("copper",1)
Error in FUN(X[[i]],...) : object 'variable' not found
Called from: FUN(X[[i]],...)
我在这里查看了多个不同的答案,但除非我错过或误解了我可能拥有的解决方案,否则我找不到答案。
解决方法
您正在为您的函数提供字符值“copper”(而不是符号)。您可以使用 sym
转换为符号,然后在 !!
语句中使用 dplyr
取消引用。
fc.function <- function(variable,steps) {
df %>%
select(year,!!sym(variable)) %>%
model(MEAN(!!sym(variable))) %>%
forecast(h = steps)
}