【发布时间】:2023-04-09 11:22:01
【问题描述】:
我正在尝试创建一个 R 函数,该函数接受一个 tsibble 和列名,适合一些基本模型,并最终输出一个绘图(尽管绘图部分不是这个问题的主题)。
此时,我无法让以下代码工作:
base_line_models <- function(dataframe, column) {
col_name <- enquo(column)
#col_name <- as.name(column)
df_fit <- dataframe %>%
model(
Mean = MEAN(!!col_name),
`Naïve` = NAIVE(!!col_name),
Drift = NAIVE((!!col_name) ~ drift())
)
return(df_fit)
}
base_line_models(souvenirs, 'Sales')
# using the souvenirs tsibble from the fpp3 package
它返回:Error: 'call' must be a quoted call ,我已经搜索但无济于事,对我来说没有意义,因为从我所看到的一切来看,我正在调用该函数。
我感觉这与 R 如何处理函数内部的数据帧有关,所以我也尝试使用 {{column}} 和 {{col_name}} 代替 enquo() / !!column 调用,但这并没有工作。
公平警告,我是 Python 人,所以我的方法可能不是标准的 R 票价。如果我的方法不正确,请随时指出。
【问题讨论】:
-
我还没有找到解决方案,但似乎问题在于
Drift行,您使用 tidyeval 来指定公式的 LHS。这个问题的一些相关讨论:stackoverflow.com/questions/65527715/…
标签: r dataframe function time-series tsibble