【发布时间】:2019-05-15 00:16:48
【问题描述】:
我正在尝试编写一个函数来计算数据框中的新列。我希望该函数具有默认列名作为输入,并且能够从 dplyr::mutate() 中调用。
这是一个简化的示例,我使用名为 age 的列来计算四舍五入的年龄。
library(dplyr)
# function to round age WITH DEFAULT vector/column to round
round_age <- function(age = age) {
round(age)
}
# create dummy data
data = data.frame(age = c(50.1, 60.5))
# try to use default age column - ERROR
data %>%
mutate(
age_round = round_age()
)
#> Error in mutate_impl(.data, dots): Evaluation error: non-numeric argument to mathematical function.
# specify age column to round - NO ERROR
data %>%
mutate(
age_round = round_age(age = age)
)
#> age pat_age age_round
#> 1 50.1 50.1 50
#> 2 60.5 60.5 60
我希望能够在不指定数据框的情况下从dplyr::mutate 中调用该函数。有任何想法吗?非常感谢所有提示!
谢谢! 丹尼尔
【问题讨论】:
-
data$age?!也许?! -
您的问题涉及标准评估。请参阅dplyr.tidyverse.org/articles/programming.html 以获得一些帮助。同时,我将查看一些我绕过这个问题的旧代码。到时候别人也可以回答。
-
@hmhensen 我认为你是对的。我无法将 bang-bang、
enquo()、rlang语法转换为不包含数据框作为函数输入的东西。