gpt4 book ai didi

r - 如何在函数内部使用 rlang::as_string()?

转载 作者:行者123 更新时间:2023-12-05 09:31:47 24 4
gpt4 key购买 nike

我正在编写一个函数,其中我提供一个变量名作为符号。在函数的不同步骤中,我想将变量名称用作字符串。根据文档,rlang::as_string“将符号转换为字符串。”

这是一个基本的例子。此函数返回带有标题为 mean 的列的 tibble。

find_mean <- function(varname){
tibble(mean = mean(pull(mtcars, {{varname}})))
> find_mean(qsec)
# A tibble: 1 × 1
mean
<dbl>
1 17.8

我想添加另一列,变量名作为字符串,如下所示:

# A tibble: 1 × 2
mean variable
<dbl> <chr>
1 17.8 qsec

我认为这会起作用。

find_mean <- function(varname){
tibble(mean = mean(pull(mtcars, {{varname}})),
variable = rlang::as_string({{varname}}))
}

但是它返回这个错误。

> find_mean(qsec)
Error in ~qsec : object 'qsec' not found

我知道我在 rlang 的非标准评估规则方面犯了一些基本错误,但谷歌搜索还没有帮助我解决这个问题。

最佳答案

我们可以使用 ensym 转换为 symbol 然后应用 as_string

find_mean <- function(varname){
v1 <- rlang::as_string(rlang::ensym(varname))
tibble(mean = mean(pull(mtcars, {{varname}})),
variable = v1)
}

-测试

find_mean(qsec)
# A tibble: 1 x 2
mean variable
<dbl> <chr>
1 17.8 qsec

这也可以在 base R 中完成,即使用 deparse/substitute

> find_mean <- function(varname) deparse(substitute(varname))

> find_mean(qsec)
[1] "qsec"

关于r - 如何在函数内部使用 rlang::as_string()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68614169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com