library(dplyr)
df <- data.frame(x = c(1, 2, 3, 4, 5), y = c(11, 12, 13, 14, 15))
sample_fun <- function(df, x, y) {
df <- df %>%
mutate(z = {{x}} * {{y}})
}
df_out <- sample_fun(df, x, y)
我希望使数据框列之一可选,然后使用
!if.null()
进行函数测试。如果这是一个对象,而不是数据框架列,我会这样做:
sample_fun <- function(df, x, y = NULL) {
if(!is.null(y)) {
df <- df %>%
mutate(z = {{x}} * y)
}
else(df <- df %>%
mutate(z = {{x}}))
}
df_out <- sample_fun(df, x)
df_out2 <- sample_fun(df, x, y)
if(!is.null(y))
和
if(!is.null({{y}}))
返回。当y是数据框列而不是独立对象时,检查y的存在的最佳方法是什么?
一个选项是检查
Error: object 'y' not found
变量是否存在在函数调用环境中,而不是将
y
用作占位符。