r - 在 rlang 包中使用带有 quo() 的特殊字符的字符串
问题描述
我有两个变量,a 和 b。我尝试使用带有 rlang 包的表达式来计算 ab 。quo(ab) 按预期返回:
<quosure: global>
~a - b
但是,我有 a 和 b 作为字符串。所以我尝试了:quo(!!sym("ab")),结果是
<quosure: global>
~`a-b` #(note the '')
所以问题是为什么我得到~'ab',而不是~ab。我怎样才能简单地获得〜ab。请注意 quo(!!sym("a")) 按预期返回:
<quosure: global>
~a
所以似乎 - 符号存在问题(* 也会发生同样的情况)。是否与某些特殊字符/非标准评估问题有关?我该如何解决?
解决方案
使用parse_expr
...
library(rlang)
q0 <- quo(a - b)
q1 <- quo(!!parse_expr("a - b"))
identical(q0, q1)
# [1] TRUE
...或parse_quo
:
q2 <- parse_quo("a - b", global_env())
identical(q0, q2)
# [1] TRUE
推荐阅读
- excel - MAX IF over 列不识别值
- javascript - 这个 VSCODE 智能感知是从哪里来的?
- kubernetes - kubernetes,虚拟机可以ping外部服务器,但是虚拟机上部署的pod无法连接外部服务器
- web - 用于网页设计师的多个网站的多个 API 密钥
- excel - 如何根据excel中的另一个列值连接列值?
- c++ - error in extern initialization with C++ compiler
- python - Python - 双 y 轴图表,对齐零
- python - 行之间相对于列字段的总时间差(以毫秒为单位)
- c# - 现有 ASP .Net Webform App - 如何添加专用客户端登录
- javascript - 使用asp.net显示警报消息后重定向到弹出窗口?