我想使用该glue
函数更改特定列中的值以包含来自另一列的信息。
我通常这样做:
library(glue)
library(dplyr)
df = data.frame(x = c("Banana","Apple","Melon"),
y = c(10,15,27),
z = rep(c("something_else"),3))
df %>%
mutate(x = glue("{x} ({y})"))
输出:
#> x y z
#> 1 Banana (10) 10 something_else
#> 2 Apple (15) 15 something_else
#> 3 Melon (27) 27 something_else
当我尝试使用数据框和列名作为用户定义函数中的输入来做同样的事情时,我的问题就出现了。
我最初的要求是使用双花括号和胶水函数来传递输入,但这会导致错误。
concatenate_value_to_string <- function(tbl,var1,var2) {
tbl %>%
mutate({{var1}} := glue("{{{var1}}} ({{{var2}}})"))
}
concatenate_value_to_string(df,x,y)
#> Error in UseMethod("mutate"): no applicable method for 'mutate' applied to an object of class "function"
由reprex 包于 2021-08-02 创建 (v2.0.0 )
显然三重花括号不是这里的解决方案,有人可以帮我吗?
谢谢你。