将变量名称向量传递给 dplyr 中的range()

2023-11-26

我想通过arrange(){dplyr} 要排序的变量名称向量。通常我只是输入我想要的变量,但我试图创建一个函数,其中排序变量可以作为函数参数输入。

df <- structure(list(var1 = c(1L, 2L, 2L, 3L, 1L, 1L, 3L, 2L, 4L, 4L
  ), var2 = structure(c(10L, 1L, 8L, 3L, 5L, 4L, 7L, 9L, 2L, 6L
  ), .Label = c("b", "c", "f", "h", "i", "o", "s", "t", "w", "x"
  ), class = "factor"), var3 = c(7L, 5L, 5L, 8L, 5L, 8L, 6L, 7L, 
  5L, 8L), var4 = structure(c(8L, 5L, 1L, 4L, 7L, 4L, 3L, 6L, 9L, 
  2L), .Label = c("b", "c", "d", "e", "f", "h", "i", "w", "y"), 
  class = "factor")), .Names = c("var1", "var2", "var3", "var4"), 
  row.names = c(NA, -10L), class = "data.frame")

# this is the normal way to arrange df with dplyr
df %>% arrange(var3, var4)

# but none of these (below) work for passing a vector of variables
vector_of_vars <- c("var3", "var4")
df %>% arrange(vector_of_vars)
df %>% arrange(get(vector_of_vars))
df %>% arrange(eval(parse(text = paste(vector_of_vars, collapse = ", "))))

Hadley 并没有在帮助文件中明确说明这一点,仅在他的 NSE 小插图中明确说明了这一点。后跟下划线的函数版本使用标准评估,因此您可以向它们传递字符串向量等。

如果我正确理解你的问题,你可以更换arrange() with arrange_()它会起作用的。

具体来说,将字符串向量传递为.dots当你这样做时争论。

> df %>% arrange_(.dots=c("var1","var3"))
   var1 var2 var3 var4
1     1    i    5    i
2     1    x    7    w
3     1    h    8    e
4     2    b    5    f
5     2    t    5    b
6     2    w    7    h
7     3    s    6    d
8     3    f    8    e
9     4    c    5    y
10    4    o    8    c

========== 2018 年 3 月更新 ==============

正如我在此处所示,使用 dplyr 中的标准评估版本现在被认为已弃用。你可以阅读Hadley 的编程小插曲为了新的方式。基本上你会使用!!取消引用一个变量或!!!取消引用内部变量向量arrange().

当您传递这些列时,如果它们是裸露的,请使用引用它们quo()对于一个变量或quos()为一个向量。不要使用引号。请参阅 Akrun 的回答。

如果您的列已经是字符串,则使用以下命令为其命名rlang::sym()对于单列或rlang::syms()为一个向量。请参阅克里斯托斯的回答。您还可以使用as.name()对于单列。不幸的是,截至撰写本文时,有关如何使用的信息rlang::sym()尚未将其纳入我上面链接的小插图中(根据他的草案,最终它将出现在“可变准引用”部分中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将变量名称向量传递给 dplyr 中的range() 的相关文章

随机推荐

  • nodejs jade 条件扩展

    我想让我的 Jade 页面根据条件扩展不同的布局 所以我的代码如下所示 if myConditionVariable extends layout1 else extends layout2 block content p here goe
  • 在网页上显示度数符号

    我有一个程序 可以从元数据中提取 GPS 坐标并将结果导入数据库 然后我使用 PHP 在网页上显示数据 我的问题 我最近创建了一个新模板 但无论出于何种原因 它不再显示度数符号 而是显示 我只是觉得奇怪 它适用于一个模板 但不适用于另一个模
  • Pytube 错误:get_throttle_function_name:找不到多个匹配

    我正在尝试从网址 https www youtube com watch v uyVYfSNb Pc list PLBxwSeQlMDNiNt72UmSvKBLsxPgGY Jy 下载 YouTube 播放列表 但收到错误 get thro
  • 如何重置 React 输入的默认值

    我有一组设置了 defaultValue 的 React 输入元素 这些值通过 onBlur 事件更新 我还在页面上执行了另一个操作 用于更新这些输入元素中的所有值 发生这种情况时 有没有办法强制做出反应以呈现新的默认值 我无法轻松使用 o
  • 在 Windows 中通过调用名称调用 Ghostscript?

    我应该怎么做才能在 Windows 中通过调用名称调用 Ghostscript 我将 Ghostscript bin 文件夹添加到 Windows PATH 和 Path 变量 但它不起作用 gswin32c exe 和 gswin32c
  • 在 qUnit 中测试整个页面重定向

    我有以下功能 var redirect function window location href http www google com 我想使用 qUnit 测试这个函数 问题是 当我调用运行测试的 HTML 文档时 一旦它到达调用的测
  • 为什么a[n]在运行时被c接受?

    为什么我们可以在c中做到这一点 int n scanf d n int a n 我认为数组在加载时位于内存中 但上面的示例似乎在运行时有效 我是否误解了什么 你们能帮忙吗 Thanks 我不是 C 方面的专家 但这可能是一个变长数组添加者为
  • 在 swift 中为 for 循环添加延迟

    我有一个编码 问题 我有一个标签 我想每 2 秒动态更改一次文本 我做了以下事情 WELCOME STRING ARRAY let welcomeContainer String Welcome Benvenuti Bienvenue Wi
  • 在asp.net mvc中,如何传递整数数组作为参数

    我有一个控制器函数 以前将整数作为 URL 中的每个部分 我在路由文件中设置 但现在其中一个参数需要是整数数组 这是控制器的操作 public JsonResult Refresh string scope int scopeId retu
  • 如何下载 Google App Engine 上的所有数据存储实体?

    我读了GAE 文档 我似乎不知道如何下载我的所有实体数据 我想做的是将整个内容下载为一个大 TSV 文件 或者我可以轻松地合并到其中的文件 这样我就可以将我的各种实体导入到电子表格中并摆弄它们 但我却被困在了起点 我不明白文档的前几位 本文
  • 如何在android中的imageview中从url网站获取图像

    我试图从 url 网站获取 ImageView 中的图像 但图像没有显示 这段代码有什么问题 这是网址image 这是我的主要活动 ImageView i private Bitmap bitmap Override protected v
  • 如何将 CryptoPP::Integer 转换为 char*

    我想将 myVar 转换为CryptoPP Integer to char 或字符串 代码如下 CryptoPP Integer myVar pubKey ApplyFunction m std cout lt lt result lt l
  • C“块”插入符

    我注意到了该声明涉及脱字号 字符固定在 cdecl org 网站的顶部 cast foo into block int long long returning double double int long long foo 有人可以解释一下
  • 在 Woocommerce 中以编程方式添加带有评级的产品评论

    标题说明了一切 我知道评论是 WordPress 中的原生评论帖子类型 我已经包含了添加评论的代码 但问题是我不清楚如何对评论进行评级以及如何将其与特定产品联系起来 当我使用 comment post ID 时 它似乎没有将评论 评论 分配
  • 无法在 Chromium 嵌入式框架中播放视频 (mp4)

    我正在使用 Windows 窗体应用程序和嵌入式 Chromium 嵌入式框架 CEF 除了视频和音频之外 一切都运行良好 我怎样才能让它发挥作用 提前致谢 您需要使用选项来编译 CEF 以启用proprietary codecs 即 H
  • CGFontCreateWithDataProvider 在飞行模式下挂起

    当我打电话给CGFontCreateWithDataProvider 当处于飞行模式时 我的应用程序冻结了 不在飞行模式下 它工作正常 字体存储在设备上 不应进行网络访问 调用该方法加载本地字体文件时 self registerIconFo
  • WordPress 混合内容错误

    我在多站点环境中有 3 个站点 我还为管理部分启用了 SSL 但我得到了很多 混合内容 管理员错误仅适用于ONE地点 结果 管理中的许多脚本和样式表都被破坏了 如果我的有什么问题ht访问规则 or the 可湿性粉剂配置文件 那么其他网站上
  • 如何检测我的程序是否在 Active Directory 环境中运行?

    如何检测我的程序是否在 Active Directory 环境中运行 我正在使用 C 和 Net 2 0 尝试获取Environment UserDomainName 并将其与Environment MachineName 进行比较 如果两
  • 我们可以使用phonegap框架在iphone中进行推送通知吗?

    我需要有关如何使用phonegap 框架实现推送通知的基本概念 我们可以 就在今天早上 该测试版的最新版本为开发人员提供了一个非常令人兴奋的新功能 新消息的推送通知 这意味着应用程序将能够在发生重要事件时发送短信样式的消息 摘自该网站 ht
  • 将变量名称向量传递给 dplyr 中的range()

    我想通过arrange dplyr 要排序的变量名称向量 通常我只是输入我想要的变量 但我试图创建一个函数 其中排序变量可以作为函数参数输入 df lt structure list var1 c 1L 2L 2L 3L 1L 1L 3L