问题标签 [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.
r - dplyr Everything() 参数字符串 select_
我需要与参数一起使用带下划线select
的字符串版本。它不工作。dplyr
everything()
错误:没有注册 tidyselect 变量
有没有everything
我遗漏的强调论点?
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 日创建。
有没有办法选择变量进行排列而不直接命名它们?
r - 从每行中的所有变量创建一个矩阵
我有一个存储一组矢量化矩阵的数据框。也就是说,在每一行中,我都有与矩阵中的元素相对应的 NxM 变量。
给定这个数据框,我想将一个函数应用于存储在每一行中的矩阵,然后将结果存储在一个新变量中。
一种简单的方法是指定 NxM 变量的名称。例如,如果我要应用的函数只是元素的总和(在实际情况下,它计算该矩阵的可能性):
但是由于我的矩阵的维度可能会从一个实验变为另一个实验,并且由于这个维度通常太大而无法枚举所有变量,所以我想要一个通用的解决方案。
我尝试
(在此示例中,应调整 ncol 和 nrow 以适应当前变量数,但我可以手动完成。)
但这会引发错误:
mutate_impl(.data, dots) 中的错误:评估错误:没有注册 tidyselect 变量。
有没有简单的方法来做到这一点?
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)。
非常感谢任何反馈
r - 正则表达式(用 tidyr 收集多组列)
受到哈德利在这个答案中的漂亮gather
方法的启发,我尝试使用tidyrgather()
并spread()
结合正则表达式regex
,但我似乎在regex
.
我确实研究了几个regex
问题;这个,这个,还有regex101.com。我试图regex
通过使用来规避starts_with()
,ends_with()
并matches()
受到这个问题的启发,但没有运气。
我在这里问是希望有人能指出我哪里弄错了,我可以解决它,最好使用来自tidyselect的选择助手。
我需要选择 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()
, 等将不胜感激。
r - 错误:找不到函数“lang_unnamespace”
我在这个 Travis build 中遇到了错误,我无法在本地重现它。是的,我意识到我没有最小的可重现示例,但我知道它发生在tidyselect::vars_select()
. 有没有其他人遇到过这个?lang_unnamespace()
我在谷歌搜索中找不到任何提及。
r - 变异多个变量以创建多个新变量
假设tibble
我需要获取多个变量并将它们变异为新的多个新变量。
例如,这是一个简单的 tibble:
我想从名称以“y”开头的每个变量中减去变量 z,并将结果变异为 tb 的新变量。另外,假设我不知道我有多少“y”变量。我希望解决方案能够很好地适应tidyverse
/dplyr
工作流程。
本质上,我不明白如何将多个变量变为多个新变量。我不确定您是否可以mutate
在这种情况下使用?我试过mutate_if
了,但我认为我没有正确使用它(并且我得到一个错误):
提前致谢!
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 日创建。
r - 插入符号:未找到“rlang_env_get”
library(caret)
几天前我跑了,它奏效了。从那以后我更新了 Rtools,现在我遇到了一些我无法通过常用方法解决的错误
错误信息如下:
类似的tidyselect
我都试过install.packages
了
当我这样做时,我可以加载tidyselect
,但不是caret
。然后我决定尝试caret
:的 github 版本devtools::install_github('topepo/caret/pkg/caret')
。这失败了几个错误消息:
和
会话信息():
关于我应该看什么的任何想法都会很棒。谢谢,乔尼
r - dplyr::select() 带有一些可能不存在于数据框中的变量?
我有一个辅助函数(比如foo()
),它将在可能包含或不包含指定变量的各种数据帧上运行。假设我有
我要选择的变量是
也就是说,我想foo(d1)
返回taxon
,model
和z
列,而foo(d2)
只返回taxon
and 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(其中我还没有找到时间让我的头脑转转!)