我无法将字符串传递到使用dplyr的函数中。
首先,我有一个简单的版本,可以生成所需的输出,但未称为所需的输出。
接下来,我将展示一个版本,即使该版本不起作用,我也可以使用这种方式调用该函数。
这将产生我想要的结果:
car_column <- function(d,Column,Value,Regex) {
d %>%
filter(str_detect(car_name, regex('mazda', ignore_case = TRUE))) %>%
rename(Measurement = mpg) %>%
select(car_name, Measurement)
}
mtcars %>%
tibble::rownames_to_column() %>%
rename(car_name = rowname) %>%
car_column(car_name, mpg, "mazda")
此代码调用我要调用的函数。请注意,“ car_name”很难 该函数定义中编码,但应更改为“列”。
car_column <- function(d,Column,Value,Regex, Statistic) {
d %>%
filter(str_detect(car_name, regex(Regex, ignore_case = TRUE))) %>%
rename({{Statistic}}:= {{Value}}) %>%
select({{Column}}, {{Statistic}})
}
mtcars %>%
tibble::rownames_to_column() %>%
rename(car_name = rowname) %>%
car_column("car_name", "mpg", "mazda","Measurement")
答案 0 :(得分:2)
由于输入参数是字符串,请将其转换为sym
bol并求值(!!
)
car_column <- function(d,Column,Value,Regex, Statistic) {
d %>%
filter(str_detect(!! rlang::sym(Column), regex(Regex, ignore_case = TRUE))) %>%
rename({{Statistic}}:= {{Value}}) %>%
select({{Column}}, {{Statistic}})
}
mtcars %>%
tibble::rownames_to_column() %>%
rename(car_name = rowname) %>%
car_column("car_name", "mpg", "mazda","Measurement")
# car_name Measurement
#1 Mazda RX4 21
#2 Mazda RX4 Wag 21