r - 将带破折号的 quosure 转换为字符串?

标签 r dplyr rlang tidyeval quosure

当我做:

> quo(DLX6-AS1) 

输出是:
<quosure>
expr: ^DLX6 - AS1
env:  global

在破折号周围插入空格。

当我尝试将其转换为字符串时,我得到:
quo(DLX6-AS1) %>% quo_name

"DLX6 - AS1"

或者
quo(DLX6-AS1) %>% rlang::quo_name

或者
quo(`DLX6-AS1`) %>% rlang::quo_name

Error: Can't convert a call to a string

我怎样才能在我的函数中使用带破折号的字符串?该函数接受一个基因名称并在数据框中查找该行,但其中一些基因由破折号连接:
geneFn <- function(exp.df = seurat.object@data, gene = SOX2) {

    gene <- enquo(gene)

    exp.df <- exp.df[as_name(gene), ] 

}

> geneFn(DLX6-AS1)

谢谢!

以前在这里问过这个问题:https://github.com/r-lib/rlang/issues/770 ,但它没有回答如何实际执行此操作。

最佳答案

你有什么版本的rlang?对我来说这有效:

quo(`DLX6-AS1`) %>% quo_name()
#> [1] "DLX6-AS1"

当列名有特殊字符时,您确实需要使用反引号,否则它们将被解释为代码。

请注意,建议使用 as_name()as_label()而不是 quo_name() ,后者是一个误导性的用词不当,将来可能会被弃用。

关于r - 将带破折号的 quosure 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879075/

相关文章:

r - 检查一系列日期是否在一系列不同的时间间隔内

r - 让 table() 在 R 中返回零

r - 使用 rlang 选择整个数据框而不仅仅是一列

r - 如何将 dplyr 操作与列名的字符串列表一起使用

r - 在编程中使用dplyr filter()

r - 让 quosures 在 map 调用中发挥作用

r - 将所有列名及其索引对保存为数据框/字典

r - 控制ggvis - r中因子组的颜色

rlang:使用 ... 传递多个组以收集()

r - 使用 dplyr 根据列名称更改数据框中的值?