如何将使用 enquo() 创建的动态变量名称传递给 dplyr 的 mutate 进行评估?

2023-11-26

我正在创建一个工作流程,其中包含相同的管道步骤:重命名、选择依据,然后使用我在管道之前提供的名称来更改所有内容。

我已经成功使用enquo() and !!(bang bang)重命名为我想要的字符串,然后再次选择它,但是当我到达变异步骤时,它要么重复文本字符串作为列值,要么不会计算。

我重新创建了下面的代码:

#Testing rename, select, and mutate use cases for enquo()

#Load packages
library(dplyr)
library(rlang)
library(magrittr)

#Create name I want to pass
new_var <- quo("new_name")

#Create Test Data
t1 <- tibble(Year = c(2000:2004),
             old_name = c(NA, 1, 1, 1, NA))

我可以用以下命令重命名该列quo_name() and :=

t1 %>% 
  rename( !! quo_name(new_var) := old_name)

我可以使用它来选择!!

t1 %>% 
  rename( !! quo_name(new_var) := old_name) %>% 
  select(Year, !!new_var)

但我无法在 mutate 中调用该列并使用这些值

t1 %>% 
  rename( !! quo_name(new_var) := old_name) %>% 
  select(Year, !!new_var) %>% 
  mutate(test_var = (!! new_var))

'new_var' 对象是quosure在一根绳子上。提取字符串,将其转换为符号,然后进行评估

t1 %>% 
   rename( !! quo_name(new_var) := old_name) %>% 
   select(Year, !!new_var) %>% 
   mutate(testvar = !! rlang::sym(rlang::quo_name(new_var)))
# A tibble: 5 x 3
#   Year new_name testvar
#  <int>    <dbl>   <dbl>
#1  2000       NA      NA
#2  2001        1       1
#3  2002        1       1
#4  2003        1       1
#5  2004       NA      NA

另外,如果我们从不带引号的开始new_var in quosure,那么OP的代码就可以工作了

new_var = quo(new_name)
t1 %>% 
     rename(!! new_var := old_name) %>% 
     select(Year, !!new_var) %>% 
     mutate(testvar = !! new_var)
# A tibble: 5 x 3
#   Year new_name testvar
#  <int>    <dbl>   <dbl>
#1  2000       NA      NA
#2  2001        1       1
#3  2002        1       1
#4  2003        1       1
#5  2004       NA      NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将使用 enquo() 创建的动态变量名称传递给 dplyr 的 mutate 进行评估? 的相关文章

  • 如何避免循环

    大家好 我是 R 新手 我有两个面板数据文件 其中包含 id date 和 ret 列 文件 A 的数据比文件 B 多得多 但我主要处理文件 B 数据 id 和 date 的组合是唯一标识符 有没有一种优雅的方式来查找 B 中的每个 id
  • 带频率图的 R 热图类型图

    I am trying to create a plot like the following 我已经使用 ggplot2 中的 geom tile 粗略地得到了左侧图 但我无法弄清楚如何生成右侧图以及如何将两个图放在一起 Example
  • 使用 Visual Studio 构建 R 包 (C API)

    我正在尝试使用 Visual Studio 构建一个简单的 R 包 这是我的代码 include
  • 如何使用 R / igraph 设置边缘颜色和顶点间距

    我是 R 新手 试图弄清楚如何为我有数据的系统制作社交网络地图 我已经设法从常见问题解答和教程中弄清楚我想做的大部分事情 但我被困在两件事上 如何使画布更大 图表间隔更大 现在已经太挤了 目前 边缘厚度是根据重量设置的 权重代表不同的状态
  • 在绘图中的所有坐标之间绘制线条

    我有以下数据框 data lt data frame x c 5 1 3 2 5 7 12 y c 5 7 6 1 3 5 6 我可以使用 ggplot 函数绘制这些坐标 并在这些坐标之间画一条线 ggplot data aes x y g
  • R 中的优化函数可以接受目标、梯度和粗麻布吗?

    我有一个想要优化的复杂目标函数 优化问题需要相当长的时间来优化 幸运的是 我确实有可用的函数的梯度和粗麻布 R 中是否有一个优化包可以接受所有这三个输入 optim 类不接受 Hessian 矩阵 我已经扫描了用于优化的 CRAN 任务页面
  • 在r包中重新导出数据集

    In R包 有可能重新导出函数 这使得很容易回收相同的函数 而不必在不同的包之间重复代码 例如 devtools session info函数是重新导出sessioninfo session info export importFrom s
  • 添加有关白天/黄昏/夜晚/黎明的信息以在 R 中跟踪数据

    我有一个数据集 其中包含几个月的日期时间 纬度和经度变量的跟踪数据 如下所示 gt start lt as POSIXct 2018 08 01 00 00 00 format Y m d H M S tz UTC gt datetime
  • 使用 R 迭代读取、操作多个 Excel 文件并将它们附加到一个数据帧中

    在一个目录下 我有多个具有相似格式的excel文件 您可以从以下位置下载示例文件 here https www dropbox com s ho3visres55kpoy test zip dl 0 我需要 循环文件和read excel
  • 加拿大人口普查地图分区 R

    我对 R 和映射非常陌生 我想创建某些数据的映射 我有一组名为 D Montreal 的数据 显示 2010 年前往蒙特利尔的加拿大人口普查部门游客来自哪个国家 我想使用此数据创建一个地图 以显示有多少人来自不同地区 也许可以通过对根据人数
  • 在闪亮的应用程序和多个页面中进行身份验证

    在我正在开发的系统中 我有 3 个不同的参与者 用户 管理员 支持团队 使用 Shiny App 我想知道如何向这三个参与者进行身份验证 每个参与者只能访问他们的页面 我发现使用闪亮的服务器专业版可以实现这一点 但它不是免费的 有什么方法可
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • R:如何添加具有从矩阵的每一行中随机选择的值的列?

    我会先说我是一个 R 菜鸟 我认为这可能有一个简单的解决方案 但我正在努力寻找它 我有一个 2 列 1 000 行的矩阵 保持行固定 我想创建一个新变量 从两列中随机选择一个元素 例如制作一个简单的矩阵 matrix c 1 1 4 6 1
  • 更改 ggplot 条形图填充颜色

    有了这个数据 df lt data frame value c 20 50 90 group c 1 2 3 我可以得到一个条形图 df gt ggplot aes x group y value fill value geom col c
  • 更改列的顺序

    我正在处理一个包含 gt 40 列的大型数据框 我希望能够移动列 而不必指定所有列名称 例如 a lt c 1 5 b lt c 4 3 2 1 1 Percent lt c 40 30 20 10 10 Labels lt c Cat D
  • R 中有没有快速替换列值的方法?

    假设我们有一个包含数值的数据框 如下所示 Temperature Height 32 157 31 159 33 139 我想更换Height价值观与pic 00001 pic 00002等等 最终结果是 Temperature Heigh
  • 使用facet时ggplot2控制每行的面板数量?

    Is it possible to control the number of panels per row in a ggplot I can only get an equal number of panels on each row
  • 为 RStudio Server 1.0.44 配置日志目录

    我在 CentOS 7 上运行 RStudio Server 1 0 44 根据文档 https support rstudio com hc en us articles 200554766 RStudio Server Applicat
  • R中不同级别的李克特分组

    我想使用 Likert 包 并按变量分组并绘制结果 问题是我想要可视化的变量有不同的级别 有没有解决的办法 一个简单的例子来说明我的问题 library reshape library likert foo lt data frame ca
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi

随机推荐

  • np.array() 和 np.asarray() 有什么区别?

    NumPy 和 NumPy 有什么区别np array and np asarray 我什么时候应该使用其中一种而不是另一种 它们似乎产生相同的输出 The 的定义asarray is def asarray a dtype None or
  • table-header-group 、 table-footer-group 属性在 Chrome 中不起作用

    这是我的代码 http furkan brove net syflm php 当我打印它时 它在 Chrome 中不起作用 我希望它在打印模式下将页眉和页脚放在每一页上 此外 在每个浏览器中 最后一个页脚位于内容的底部 但我希望它位于页面底
  • python中的完全单调插值

    我有一些数据 例如 我想拟合一条可微分的单调曲线 我试过PchipInterpolator类但在一个非常相似的图表上 结果是 这并不单调 如何将单调曲线拟合到这样的数据 以下是另一个类似图表的 y 值示例集 0 11091571190236
  • Xcode 6.3 两次构建所有 swift 文件

    我刚刚升级到 Xcode 6 3 并试图将编译时间减少到可管理的程度 我的项目中有大约 120 个 swift 文件 类 编译需要 2 3 分钟 我的项目还有两个测试目标 UnitTests and AutomatedTests Here
  • Django forms.DateInput 不应用 attrs 字段中给出的属性

    尝试通过 django 的 attrs 说明符应用时 占位符 类未设置表单 日期输入 表格是一个模型表单 并根据docs 采用与 TextInput 相同的参数 但多了一个可选参数 这是代码 widgets my date field fo
  • Javascript 中除法结果的四舍五入

    我正在 Javascript 中执行以下操作 0 0030 0 031 如何将结果四舍五入到任意位数 a 的最大数量是多少var将举行 现代浏览器应该支持一种称为toFixed 这是取自网络的例子 Example toFixed 2 whe
  • 裁剪和缩放 MTLTexture

    我可以创建一个新的吗MTLTexture尺寸w2 h2现有的MTLTexture region x1 y1 w1 h1 PS 我考虑过使用MTLTexture buffer makeTexture但偏移量需要是64字节 为什么 以下是您可以
  • 如何更改 joptionpane 的大小和字体?

    您可以更改 JOptionPane 文本的字体和大小吗 我尝试过 只有当我在该特定的 java 类上 运行文件 时它才有效 如果您启动整个项目 它不会更改字体 我只想更改特定的 JOptionPane 而不是全部 这是代码 UIManage
  • + 运算符如何用于合并委托?

    例如 delegate void SomeDelegate SomeDelegate a new SomeDelegate gt Console WriteLine A SomeDelegate b new SomeDelegate gt
  • Flexbox 溢出滚动条显示在主体而不是内部元素上

    问题 在使用带有溢出的 Flexbox 的全尺寸应用布局 100 宽度 100 高度 中 在 Firefox IE 或 Edge 中不会显示滚动条 它们在 Chrome 中确实显示正常 FF IE Edge 中不是在元素上设置垂直滚动条 而
  • kafka ack=all 和 min-isr

    Summary Kafka 的文档和代码注释表明 当生产者设置acks被设定为all那么只有在以下情况下才会将 ack 发送给生产者 所有同步副本都已赶上 但是代码 Partition Scala checkEnoughReplicasRe
  • “[<-.data.frame”中出现 R 错误...替换有 # 项,需要 #

    我是 R 新手 这超出了我的能力范围 下面的脚本使用两个虚拟表 结果和计数 每个表都有两列 A 和 B 我正在运行排列测试来比较 A 和 B 的结果 具体来说 我正在查看 A 和 B 的结果 计数 结果和计数都有 20 行 并且我编写了一个
  • Clojure - 埃拉托斯特尼的尾递归筛

    我在 Clojure 中实现了埃拉托斯特尼筛法 defn sieve n loop last tried 2 sift range 2 inc n if or nil last tried gt last tried n sift let
  • Readlock 和 Writelock 会导致 writer 饥饿吗?

    在解决读者写入问题时 我尝试使用ReentrantReadWriteLock 我知道所有读者可以同时获取读锁 但是写锁必须等待所有读锁被释放 如果我们有很多读者 这是否会导致作者处于饥饿状态 ReentrantReadWriteLock 可
  • Eclipse 格式化程序可以配置为在括号之间正确缩进多行吗?

    可以配置 或扩展 Eclipse 格式化程序和代码清理来添加我在以下示例中期望的缩进 public static void main String args String numbers new String one two three f
  • Android EditText 内存泄漏

    很多人注意到活动中的 EditText 即使在活动完成后也持有对活动的强引用 需要明确的是 此 EditText 位于布局内并已膨胀 因此没有设置侦听器 这仅发生在某些设备上 例如三星 Galaxy S4 Android 4 2 2 等 许
  • 通过 PhantomJS 调用时找不到模块“casper”

    我在 C xampp htdocs phantom 中安装了 PhantomJS 并且在该文件夹 C xampp htdocs casper 中安装了 CasperJS 当我尝试使用 casper 站点上运行这些示例代码时phantomjs
  • 如何检查存储函数中INSERT是否顺利?

    我正在创建一个存储函数 它应该将新行插入到表中 该表中还有一个独特的列 我如何检查一切是否顺利并且行确实已插入 如何准确检查是否找到了这个唯一的列 例如 尝试添加重复值 您可以检查 LAST INSERT ID 函数和 INSERT IGN
  • 在 SQL 中将 IN 更改为 EXISTS

    我有以下查询 select A B from table1 where A in select c from table 2 但是 现在我需要更改此查询并使用exists代替in 并且应该给出相同的结果 我的表格如下所示 table1 ta
  • 如何将使用 enquo() 创建的动态变量名称传递给 dplyr 的 mutate 进行评估?

    我正在创建一个工作流程 其中包含相同的管道步骤 重命名 选择依据 然后使用我在管道之前提供的名称来更改所有内容 我已经成功使用enquo and bang bang 重命名为我想要的字符串 然后再次选择它 但是当我到达变异步骤时 它要么重复