gpt4 book ai didi

r - `sym()` 对 tidyeval 做了什么?

转载 作者:行者123 更新时间:2023-12-05 01:41:49 28 4
gpt4 key购买 nike

library(tidyverse)
input_name <- "birth_year"
input_value <- 19

quo(filter(starwars, !!input_name == !!input_value)) # line 5
quo(filter(starwars, !!sym(input_name) == !!input_value)) # line 6

第 5 行和第 6 行有什么区别,以及 sym() 函数的使用?为什么 sym() 只需要在第 6 行等式的左侧?

sym() 的目的是获取字符串并将它们取消引用为符号吗?

第 5 行

<quosure>
expr: ^filter(data, "birth_year" == 19)
env: global

第 6 行

<quosure>
expr: ^filter(data, birth_year == 19)
env: global

最佳答案

在第一种情况下,不对列求值,对字符串求值。但是,通过转换为 symbol 并对其求值,它会返回列值。 lhs 中需要 sym 因为我们不是要获取文字值,而是要提取列值

根据 ?sym

sym() creates a symbol from a string and syms() creates a list of symbols from a character vector.

?"!!"

The !! operator unquotes its argument. It gets evaluated immediately in the surrounding context.

关于r - `sym()` 对 tidyeval 做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53381764/

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