Rlang:如何将字符串视为符号
Rlang: how to treat strings as symbols
我再次对 rlang
的文档和错误消息感到困惑。我已经使用双刘海和三刘海、:=
、quo
、enquo
、ensym
和所有其他名称不明确的 rlang 函数尝试了 20 次不同的迭代。
如果您感到沮丧,那是因为每次我尝试使用 rlang
来处理对象名称的变量时,我都会 运行 进入同一堵墙。我错过了一些关键的东西吗?我傻吗? rlang
函数名称和文档真的很差吗?
我正在尝试确定 tibble
中变量的 class。除了帮助完成这项工作之外,如果有人可以建议我如何在文档中找到答案,我将不胜感激。
require(tidyverse)
require(rlang)
x <- enframe(names(mtcars), name = NULL, value = "var") %>%
add_column(df = "mtcars")
x %>% mutate(cls = class(sym(paste0(df, "$", var))))
#> Only strings can be converted to symbols
由 reprex package (v0.3.0)
于 2019-10-27 创建
1)解析并求值
library(dplyr)
library(rlang)
x %>% rowwise %>% mutate(cls = class(eval_tidy(parse_expr(paste0(df, "$", var)))))
2) 或使用 rlang 的 sym
和 purrr
的 pull
library(dplyr)
library(purrr)
library(rlang)
x %>% rowwise %>% mutate(cls = class(pull(eval_tidy(sym(df)), var)))
3) 或基本 R 函数 get
检索 df
:
library(dplyr)
x %>% rowwise %>% mutate(cls = class(get(df)[[var]]))
我再次对 rlang
的文档和错误消息感到困惑。我已经使用双刘海和三刘海、:=
、quo
、enquo
、ensym
和所有其他名称不明确的 rlang 函数尝试了 20 次不同的迭代。
如果您感到沮丧,那是因为每次我尝试使用 rlang
来处理对象名称的变量时,我都会 运行 进入同一堵墙。我错过了一些关键的东西吗?我傻吗? rlang
函数名称和文档真的很差吗?
我正在尝试确定 tibble
中变量的 class。除了帮助完成这项工作之外,如果有人可以建议我如何在文档中找到答案,我将不胜感激。
require(tidyverse)
require(rlang)
x <- enframe(names(mtcars), name = NULL, value = "var") %>%
add_column(df = "mtcars")
x %>% mutate(cls = class(sym(paste0(df, "$", var))))
#> Only strings can be converted to symbols
由 reprex package (v0.3.0)
于 2019-10-27 创建1)解析并求值
library(dplyr)
library(rlang)
x %>% rowwise %>% mutate(cls = class(eval_tidy(parse_expr(paste0(df, "$", var)))))
2) 或使用 rlang 的 sym
和 purrr
pull
library(dplyr)
library(purrr)
library(rlang)
x %>% rowwise %>% mutate(cls = class(pull(eval_tidy(sym(df)), var)))
3) 或基本 R 函数 get
检索 df
:
library(dplyr)
x %>% rowwise %>% mutate(cls = class(get(df)[[var]]))