如何使用 dplyr 通过非标准评估来评估构造的字符串?

2023-12-11

我读过几本关于编程的指南dplyr现在我仍然对如何解决使用非标准评估(NSE)评估构造/连接字符串的问题感到困惑。我意识到有比使用 NSE 更好的方法来解决这个例子,但我想学习如何做。

t <- tibble( x_01 = c(1, 2, 3), x_02 = c(4, 5, 6))
i <- 1

这是我想要的结果,但希望变量mutate()拟建造:

t %>% mutate(d_01 = x_01 * 2)
#>   A tibble: 3 x 3
#>   x_01  x_02  d_01
#>   <dbl> <dbl> <dbl>
#> 1  1.00  4.00  2.00
#> 2  2.00  5.00  4.00
#> 3  3.00  6.00  6.00

这是我的第一次尝试,尝试使用字符串:

new <- sprintf("d_%02d", i)
var <- sprintf("x_%02d", i)
t %>% mutate(new = var * 2)
#> Error in mutate_impl(.data, dots) : 
#> Evaluation error: non-numeric argument to binary operator.

这是我的第二次尝试,尝试使用quosures:

new <- rlang::quo(sprintf("d_%02d", i))
var <- rlang::quo(sprintf("x_%02d", i))
t %>% mutate(!!new = !!var * 2)
#> Error: unexpected '=' in "t %>% mutate(!!new ="

这是我的第三次尝试,尝试使用 quosures 和:=操作员:

new <- rlang::quo(sprintf("d_%02d", i))
var <- rlang::quo(sprintf("x_%02d", i))
t %>% mutate(!!new := !!var * 2)
#> Error in var * 2 : non-numeric argument to binary operator

Use sym and :=像这样:

library(dplyr)
library(rlang)

t <- tibble( x_01 = c(1, 2, 3), x_02 = c(4, 5, 6))
i <- 1

new <- sym(sprintf("d_%02d", i))
var <- sym(sprintf("x_%02d", i))
t %>% mutate(!!new := (!!var) * 2)

giving:

# A tibble: 3 x 3
   x_01  x_02  d_01
  <dbl> <dbl> <dbl>
1     1     4     2
2     2     5     4
3     3     6     6

另请注意,这在基本 R 中是微不足道的:

tdf <- data.frame( x_01 = c(1, 2, 3), x_02 = c(4, 5, 6))
i <- 1

new <- sprintf("d_%02d", i)
var <- sprintf("x_%02d", i)
tdf[[new]] <- 2 * tdf[[var]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 dplyr 通过非标准评估来评估构造的字符串? 的相关文章

  • R+Hadoop:如何从HDFS读取CSV文件并执行mapreduce?

    在以下示例中 small ints to dfs 1 1000 mapreduce input small ints map function k v cbind v v 2 MapReduce函数的数据输入是一个名为small ints的
  • 列表列中的设置操作

    我正在尝试做集合运算在存储在列表列中的向量之间 例如this https stackoverflow com questions 38712196 text file to dataframe with a list column DT l
  • 计算分组序列中两个值之间的差异

    这是这篇文章的后续问题 循环遍历 R 中的数据帧并测量两个值之间的时间差 https stackoverflow com questions 44885856 loop through dataframe in r and measure
  • 如何在 R 中执行随机森林/交叉验证

    我无法找到对我尝试生成的回归随机森林模型执行交叉验证的方法 因此 我有一个数据集 其中包含 1664 个解释变量 不同的化学性质 和一个响应变量 保留时间 我正在尝试生成一个回归随机森林模型 以便能够预测给定保留时间的物质的化学性质 ID
  • 在闪亮的应用程序和多个页面中进行身份验证

    在我正在开发的系统中 我有 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
  • 更改 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
  • 如何在 conda 中静音或抑制 gfortran (或 clang?)后端?

    我一直致力于构建一个非常特殊的 conda 环境 专为python and R与串扰使用rpy2 我想出的方法可以安装正确的R包如下 install main environment sh now date T echo Start Tim
  • 将非平凡函数应用于 data.table 的有序子集

    Problem 我正在尝试使用我新发现的 data table 功能 永久 来计算一堆数据的频率内容 如下所示 Sample Channel Trial Voltage Class Subject 1 1 1 196 82253 1 1 1
  • 将阿拉伯文本分配给 R 变量

    R 无法正确显示阿拉伯文本 当我使用阿拉伯语时 我得到了非常奇怪的东西 这是一个屏幕截图 问题是我想创建一个带有阿拉伯文本的词云 我需要首先解决这个问题 R 版本 R 2 15 2 GUI 1 53 Leopard 版本 64 位 6335
  • 使用 gbuffer 在 R 中缓冲(地理)空间点

    我正在尝试缓冲数据集中半径为 100 公里的点 我正在使用该功能gBuffer从包装中rgeos 这是我到目前为止所拥有的 head sampledf postalcode lat lon city province 1 A0A0A0 47
  • 在 R 中使用 gamlss::lms 选择百分位数曲线

    我正在使用 gamlss 包中的示例代码来绘制百分位数曲线 library gamlss data abdom lms y x data abdom n cyc 30 它正在绘制自己的一组百分位数曲线 如何选择只绘制第 10 50 和 90
  • 在knitr中打印漂亮的交叉表

    我想要的是使用 R Markdown 和 knit 从 RStudio 打印漂亮的交叉表 无论是在 pdf 文件中 还是在 html 文件中 我怀疑我错过了一些非常明显的东西 因为我不敢相信这是如此困难 我使用 xtabs 或 ftable
  • left_join 表示列不存在,即使它存在

    我想用两个不同的变量 tp join 连接两个数据框 出现错误 表示无法在第二个数据帧中找到变量 但是当我运行函数 colnames 时 会显示列名称 为什么会这样呢 df new lt left join master settlemen
  • 用于更改向量中元素顺序的闪亮小部件

    在很多网站上 您都有一个拖放界面来更改列表中元素的顺序 我正在寻找类似的东西闪亮 我希望用户能够拖放列表中的元素 通过更改顺序来更改优先级 现在我有一个滥用的解决方案selectizeInput 这是可行的 但当选择列表变得更大时 它很快就
  • 如何在ggplot2中使用希腊符号?

    我的类别需要用希腊字母命名 我在用ggplot2 并且它与数据配合得很好 不幸的是 我无法弄清楚如何将这些希腊符号放在 x 轴上 在刻度线处 并使它们出现在图例中 有什么办法可以做到吗 更新 我看了一下link https github c
  • R:邻接表到邻接矩阵

    Bonjour 我想将邻接列表 3 列 转换为邻接矩阵 在这个论坛中 我找到了多个有关如何将边列表转换为邻接矩阵的示例 我成功地为两列列表做到了这一点 我已经尝试了在网上可以找到的所有解决方案 但似乎我错过了一小步 我尝试过的 我的变量是用
  • R Shiny - 修复了 Shiny 仪表板中的侧边栏和主标题

    我有一个简化的闪亮仪表板 请参阅下面的代码 我想修复侧边栏和主标题 因此 在其他帖子的帮助下 我编写了一个 CSS 文件来解决该问题 sidebar color FFF position fixed width 220px white sp
  • (R 错误)错误:cons 内存耗尽(达到限制?)

    我正在处理大数据 并且有一个 70GB 的 JSON 文件 我正在使用 jsonlite 库将文件加载到内存中 我尝试过 AWS EC2 x1 16large 机器 976 GB RAM 来执行此负载 但 R 因错误而中断 Error co

随机推荐

  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • CSS:滚动条没有 100% 的高度/宽度

    是否可以强制垂直滚动条的高度小于其所属可滚动 div 的 100 使用纯 CSS 并适用于除 IE 之外的所有现代浏览器 到目前为止我想出的只是仅限 webkit解决方案与它的 webkit scrollbarCSS 选择器和自定义按钮高度
  • Eloquent Javascript:高阶函数示例

    function reduceAncestors person f defaultValue function valueFor person if person null return defaultValue else return f
  • 使用 Python 绘制常微分方程、等倾线

    我正在寻找一个 Python 包 它可以让我绘制类似于下面所示的 Java 小程序的内容 http math mit edu mathlets mathlets isoclines 有谁知道任何 ODE 绘图包吗 我可以使用 Numpy M
  • Blazor WebAssembly 401 即使我已获得授权也未获得授权

    我在用Blazor WebAssembly Asp Net Core hosted PWA并整合了AspNetCore Identity进去 我创建了AuthenticationStateProvider在客户端 现在我想允许用户访问需要授
  • 使用 TIMESTAMP 进行基本查询,不产生输出

    我有一个非常基本的设置 如果使用 TIMESTAMP BY 语句 我永远不会得到任何输出 我有一个流分析作业 它从事件中心读取数据并写入表存储 查询如下 SELECT INTO MyOutput FROM MyInput TIMESTAMP
  • Android 位置 getTime() 总是返回大不同的时间

    我根据设置定期使用位置管理器获取位置 在测试用例中使用 2 分钟并尝试使用 location geTime 方法 我没有使用 LocationManager getLastKnownLocation 文档说这是 UTC 时间 我将其转换为当
  • 打字稿与联合的交集会导致不存在的属性

    在下面的示例中 我定义了 Typescript 类型以从索引请求数据 有两种高效的方法可以从索引服务器检索数据块 either by startKey endKey or by startKey limit 键的数量 当组合这些替代情况来定
  • 为每个从 jquery 中排除一个类

    我的代码是这样的 a href each function if this attr href toLowerCase indexOf javascript 0 this attr class to top this attr href n
  • 如何使用 MVC4 和 Razor 设置 javascript 变量

    有人可以格式化下面的代码 以便我可以使用 razor 使用 C 代码设置 srcript 变量吗 下面的方法不起作用 我已经找到了这样的方法 让别人可以轻松提供帮助 int proID 123 int nonProID 456 我收到设计时
  • 根据鼠标和键盘交互检测计算机是否空闲

    我正在用 C 编写一个软件 用于控制 MacBook Pro 上的键盘背光 该软件运行 Arch Linux 作为主要操作系统 并运行 Debian 该程序作为守护进程运行 目前能够打开键盘背光 下一步是让它关注计算机何时空闲 基于鼠标和键
  • Objective-c 中的实用方法

    我应该将实用方法放在 Objective C 中的什么位置 例如 由多个类调用的附加路径处理实用方法 我见过一些例子 它们被放置在主 appdelegate 文件中 因此可供所有人使用 不过 这对我来说似乎有点奇怪 您有几个选择 最简单的方
  • Sapui5:如何在smarttable中设置初始排序顺序?

    我有一张智能桌子 如何在智能表的一列或多列上设置初始排序顺序
  • FBlikeControl 无法加载也无法运行

    随着 facebook ios sdk 的新版本发布 文档正在讨论 facebook like 控件 它允许对页面进行点赞 https developers facebook com docs ios like button 控件的文档在这
  • 为什么 RGB 到 XYZ 颜色转换之间存在如此大的差异?

    最近 我一直在尝试理解在 RGB 颜色空间和 CIE XYZ 颜色空间之间转换的代码 但似乎我尝试的每个不同的计算器都会给出截然不同的结果 例如 尝试将 255 100 70 转换为 XYZ 会产生以下结果 即使在对所有内容显式使用 d50
  • pom.xml Maven 构建时出错

    尝试构建 Maven 项目时 我的 pom xml 中出现错误 这个插件的错误在这里
  • 使用哈希样式 SYSV 编译 libstdc++

    有没有办法用散列样式SYSV而不是GNU Linux来编译GCC的libstdc 我有一个工具链 通过 crosstool ng 我用它来编译我们公司的库 以便与广泛的 Linux 系统一起使用 其中一个系统是一个非常古老的 RedHat
  • 标准函数的 NetBeans PHP 代码完成

    我已经开始使用 NetBeans 6 9 1 开发 PHP 项目 虽然它确实在一定程度上提供了代码补全 但它绝不是完整的 例如 常用的函数如 implode explode 并不在代码补全列表中 此外 对于由内置类 例如 HttpReque
  • 如何使用带有 SQL-Server 负载的显式连接表添加 Entity Framework Core n-m 自引用实体?

    我想使用 NET 6 创建一个简单的市场模拟 为此 我想将产品存储在 SQL Server 数据库中 每个产品都可以由其他产品组成 作为构建它的材料 仅用于命名说明 基本材料产品没有作为材料的产品 因此materials list可以为空
  • 如何使用 dplyr 通过非标准评估来评估构造的字符串?

    我读过几本关于编程的指南dplyr现在我仍然对如何解决使用非标准评估 NSE 评估构造 连接字符串的问题感到困惑 我意识到有比使用 NSE 更好的方法来解决这个例子 但我想学习如何做 t lt tibble x 01 c 1 2 3 x 0