r - 如何使用单词(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]], ...)
我在这里查看了多个不同的答案,但除非我错过或误解了我可能拥有的解决方案,否则我找不到我的答案。
解决方案
您正在为您的函数提供字符值“铜”(而不是符号)。您可以在语句中sym
使用 using转换为符号,然后取消引用。!!
dplyr
fc.function <- function(variable, steps) {
df %>%
select(year, !!sym(variable)) %>%
model(MEAN(!!sym(variable))) %>%
forecast(h = steps)
}
推荐阅读
- node.js - 在 Sequelize 中获取另一个名称的属性?
- java - 在 Java 中,我可以创建一个对多个对象应用过滤器的谓词吗?
- python - 如何从 TCP 数据中绘制散点图
- r - 如何组合填充和形状图例
- nlp - 除了文档相似度的 Doc2Vec 嵌入之外,还可以使用哪些附加功能?
- r - 如果 col2 的内容不在 col1 中,则连接 2 个 chr 列
- excel - 如何根据单元格值隐藏和取消隐藏行?
- string - 字符串拆分成所有可能的组合
- c# - C#-Linq:在 linq 中使用 string.equals 进行比较时忽略大小写
- c# - 将日期和时间转换为 GMT 格式