问题标签 [tidyselect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
661 浏览

r - dplyr Everything() 参数字符串 select_

我需要与参数一起使用带下划线select的字符串版本。它不工作。dplyreverything()

错误:没有注册 tidyselect 变量

有没有everything我遗漏的强调论点?

0 投票
3 回答
2123 浏览

r - 使用 dplyr 按所有列排列数据框

我正在生成 1 和 0 的数据帧,如下所示:

reprex 包(v0.1.1.9000)于 2018 年 1 月 8 日创建。

我需要按升序排列变量的总和,然后按降序排列每个变量。这很简单,使用dplyr::arrange(). 但是,我想有一个更强大的安排方法。例如,如果num_var更改为,则最后一行也必须更改为arrange(total, desc(var_1, var_2, var_3, var_4))。我已经尝试使用 tidy 选择器everything()来安排我对select()函数的处理,但是这个错误:

reprex 包(v0.1.1.9000)于 2018 年 1 月 8 日创建。

有没有办法选择变量进行排列而不直接命名它们?

0 投票
2 回答
142 浏览

r - 从每行中的所有变量创建一个矩阵

我有一个存储一组矢量化矩阵的数据框。也就是说,在每一行中,我都有与矩阵中的元素相对应的 NxM 变量。

给定这个数据框,我想将一个函数应用于存储在每一行中的矩阵,然后将结果存储在一个新变量中。

一种简单的方法是指定 NxM 变量的名称。例如,如果我要应用的函数只是元素的总和(在实际情况下,它计算该矩阵的可能性):

但是由于我的矩阵的维度可能会从一个实验变为另一个实验,并且由于这个维度通常太大而无法枚举所有变量,所以我想要一个通用的解决方案。

我尝试

(在此示例中,应调整 ncol 和 nrow 以适应当前变量数,但我可以手动完成。)

但这会引发错误:

mutate_impl(.data, dots) 中的错误:评估错误:没有注册 tidyselect 变量。

有没有简单的方法来做到这一点?

0 投票
2 回答
9009 浏览

r - dplyr::filter "没有注册 tidyselect 变量"

我正在尝试使用该dplyr::filter()函数过滤我的 tibble 的特定行。

这是我的小标题的一部分head(raw.tb)

当我要求:raw.tb %>% dplyr::filter(ind == contains("A"))

我得到: Error in filter_impl(.data, quo) : Evaluation error: No tidyselect variables were registered

在我的小标题unique(raw.tb$ind)是:

而且我想raw.tb$ind使用 tidyverse 语言仅提取以“A”开头的行。

(我知道如何在基础 R 中做到这一点,但我的目标是使用 tidyverse)。

非常感谢任何反馈

0 投票
1 回答
735 浏览

r - 正则表达式(用 tidyr 收集多组列)

受到哈德利在这个答案中的漂亮gather方法的启发,我尝试使用gather()spread()结合正则表达式regex,但我似乎在regex.

我确实研究了几个regex问题;这个这个,还有regex101.com。我试图regex通过使用来规避starts_with()ends_with()matches()受到这个问题的启发,但没有运气。

我在这里问是希望有人能指出我哪里弄错了,我可以解决它,最好使用来自选择助手

我需要选择 2 个regex组,一个到最后一个.,一个由最后一个组成.,我在下面做了两个示例,一个在我的代码工作的地方,一个在我被卡住的地方。

首先是有效的例子,

第一个数据集,工作,看起来像这样,

我就是gather()这样,

它有效,我怀疑我用 . 过度使用它regex,但它有效。但是,我的真实数据最后可以有一个或两个摘要,即

第二个数据,我卡住的地方,

现在,这是我(0[0-1]|1[0-9])$用于第二组的地方,我也尝试过类似的东西\d{1}|\d{2},但这也不起作用。

预期的输出将是这样的,

一个简单的解决方案 à la t this question using select helpers like starts_with(), ends_with(), matches(), 等将不胜感激。

0 投票
1 回答
143 浏览

r - 错误:找不到函数“lang_unnamespace”

在这个 Travis build 中遇到了错误,我无法在本地重现它。是的,我意识到我没有最小的可重现示例,但我知道它发生在tidyselect::vars_select(). 有没有其他人遇到过这个?lang_unnamespace()我在谷歌搜索中找不到任何提及。

0 投票
1 回答
7281 浏览

r - 变异多个变量以创建多个新变量

假设tibble我需要获取多个变量并将它们变异为新的多个新变量。

例如,这是一个简单的 tibble:

我想从名称以“y”开头的每个变量中减去变量 z,并将结果变异为 tb 的新变量。另外,假设我不知道我有多少“y”变量。我希望解决方案能够很好地适应tidyverse/dplyr工作流程。

本质上,我不明白如何将多个变量变为多个新变量。我不确定您是否可以mutate在这种情况下使用?我试过mutate_if了,但我认为我没有正确使用它(并且我得到一个错误):

提前致谢!

0 投票
1 回答
844 浏览

r - 基于 unquote-splicing (!!!) 排除多列

试图排除

  • 调用中的多个tidyr::gather()
  • 通过字符向量参数(的输出shiny::selectInput)而不是通过...
  • 程序化的方式

我将如何使用整洁的 eval 功能来做到这一点?

由于我通过单个函数参数传递多个列名,因此我认为我需要使用!!!(unquote-splicing) 而不是Programming with dplyr!!中所述。但这似乎并不能很好地发挥作用,而且似乎是造成了麻烦。tidyselect::vars_select()-

这是我想做的基本事情:

我想通过单个参数传递列名(就像在闪亮的应用程序中一样,它也将通过它提供服务input$<select_input_id>):

然后我试着看看-是不是问题:

这似乎行得通。

然后我尝试-输入实际的符号名称,但这不起作用(至少是我尝试的方式;-)):

编辑

在莱昂内尔的帮助下,我能够拼凑起来:

甚至简化:

reprex 包(v0.2.0) 于 2018 年 4 月 26 日创建。

0 投票
1 回答
62 浏览

r - 插入符号:未找到“rlang_env_get”

library(caret)几天前我跑了,它奏效了。从那以后我更新了 Rtools,现在我遇到了一些我无法通过常用方法解决的错误

错误信息如下:

类似的tidyselect

我都试过install.packages

当我这样做时,我可以加载tidyselect,但不是caret。然后我决定尝试caret:的 github 版本devtools::install_github('topepo/caret/pkg/caret')。这失败了几个错误消息:

会话信息():

关于我应该看什么的任何想法都会很棒。谢谢,乔尼

0 投票
3 回答
3194 浏览

r - dplyr::select() 带有一些可能不存在于数据框中的变量?

我有一个辅助函数(比如foo()),它将在可能包含或不包含指定变量的各种数据帧上运行。假设我有

我要选择的变量是

也就是说,我想foo(d1)返回taxon,modelz列,而foo(d2)只返回taxonand z

如果foo包含select(data,c(taxon,model,z))foo(d2)失败(因为d2不包含model)。如果我使用select(data,-pss)thenfoo(d1)类似地失败。

如果我从 tidyverse 撤退(只是 return ),我知道如何做到这一点data[vars],但我想知道是否有一种方便的方法可以做到这一点,或者(1)使用某种select()助手(tidyselect::select_helpers)或(2)使用 tidyeval(其中我没有找到时间让我的头脑转转!)