我再一次对rlang
的文档和错误消息感到困惑。我已经尝试过使用:=
,quo
,enquo
,ensym
以及其他名称不明确的rlang函数的两次和三次爆炸来进行20种不同的迭代。
如果您感到沮丧,那是因为每次我尝试使用rlang
处理对象名称的变量时,我都会碰到同一堵墙。我错过了重要的事情吗?我很傻吗rlang
函数名称和文档真的很差吗?
我正在尝试确定tibble
中变量的类。除了帮助您做到这一点,如果有人可以建议我如何在文档中找到答案,我将不胜感激。
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创建
答案 0 :(得分:3)
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]]))