问题标签 [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 回答
97 浏览

r - 如何捕获对 dplyr::select 中的 data.frame 所做的更改?

我想创建一个data.frame包含有关特定列状态的一些信息的子类。我认为最好的方法是使用属性special_col. 一个简单的构造函数似乎工作正常:

但是,我遇到的问题是,如果列名发生更改,我需要为各种泛型编写方法来更新此属性。如下所示,使用该data.frame方法将保持属性不变。

这是我当前对my_class. 我开始捕获这些点,然后解析它们以确定哪些列被重命名,如果它们实际上被重命名,则更改属性。

不幸的是,我认为这特别脆弱,在其他情况下会失败,如下所示。

我的感觉是,最好在tidyselect完成工作后获取列中的更改,而不是像我所做的那样尝试通过捕获点来生成相同的属性更改。关键问题是:我如何使用tidyselect工具来了解选择变量时数据框会发生哪些变化?. 理想情况下,我可以返回一些东西来跟踪哪些列被重命名为哪些其他列,哪些列被删除等等,并使用它来保持属性special_col是最新的。

0 投票
2 回答
497 浏览

r - 使用 tidyselect 函数使用 dplyr 重命名列名

我正在尝试使用dplyr::rename和 tidyselect 助手重命名一些列,以使用一些模式来做到这一点。

我怎样才能让它工作?

reprex 包于 2020-01-12 创建(v0.3.0.9001)

0 投票
1 回答
48 浏览

r - R中的辅助函数

对于某些特定变量,无论它们的位置如何,我都试图用 0 替换 NA。我写了下面的代码,但得到了一些错误..

我收到以下错误

我已经安装了dplyr, tidyr, tidyselect,但我仍然收到此错误,任何人都可以帮助我解决这个问题。

0 投票
1 回答
93 浏览

r - 在未实现它们的函数中使用 tidyselect 选择助手

如何在不实现它们的函数中使用dplyr/ tidyselect“选择助手”,例如:选择一系列连续变量?
如果可能以简单/优雅的方式(当然这是主观的)。

这是一个例子dplyr::distinct,注意这个问题是通用的

第一次尝试使用dplyr::select. 我们能做得更好吗?

基于https://tidyselect.r-lib.org/articles/tidyselect.html的第二次尝试,实际上感觉更糟

0 投票
1 回答
200 浏览

r - 调用 tidyselect-using 函数时指定点参数,无需指定前面的参数

这是我在使用...参数并tidyselect选择变量的包中的函数的简化版本:

这有效:foo(mtcars, cyl)

但是我的实际函数在参数之前有更多前面的...参数,所有参数都具有默认值。在我使用这些默认值调用我的函数并将值传递给....

这就是我想要的 - 假设dat = mtcars- 但它不起作用:

foo(... = cyl)

错误:名称不得采用...或形式..j

我可以修改函数或调用以允许直接指定...吗?

0 投票
2 回答
75 浏览

r - 如何使用 tidyselect 助手初始化变量?

我在某个函数中使用了 tidyselection,我必须将第一个参数与省略号连接起来,因为它可能是需要特定处理的特定类。

正常的行为是这样的:

我希望将其everything()作为默认值xNULL由于某种原因,我不能将其直接放在标题中)。

不幸的是,这种语法是不允许的:

我试图everything()用我知道的所有“神秘”函数来包装:parse, deparse, call, substitute, quo, sym, enquo, ensym, ... 没有任何效果(你可以在这里看到我没有很好地掌握这些)。

我可以用什么表达式替换我x=everything()的第二个代码块中的行以使该函数起作用?

版本:

  • tidyselect 版本 1.0.0
  • rlang 版本 0.4.5
  • dplyr 版本 0.8.5
0 投票
1 回答
1836 浏览

r - tidyselect 更改了在 R 中选择函数时如何引用变量名的外部向量

tidyverse在包中使用选择功能时,我开始收到警告。

例子:

给予:

如果我重构为:

此行为已从 更改tidyselect_0.2.5tidyselect_1.0.0。直到现在还没有任何警告。

在有关此更改的文档(https://tidyselect.r-lib.org/reference/faq-external-vector.html)中,声明这只是一个警告,但将来会变成错误。

我的问题是如何处理现有代码的此类更改。

我是否应该重构使用此选择方法的每一行代码来添加all_of()外部矢量引用?当以这种方式进行选择的代码中可能有数百个片段时,这听起来很难完成(它也会影响其他功能 summarise_at,例如)。

唯一的选择是坚持tidyselect_0.2.5让运行代码继续工作吗?

在现有代码的包中进行这样的更改的方法是什么?

谢谢

0 投票
5 回答
2840 浏览

r - R 替换除 * 之外的所有列的 NA

我实际的 R 数据框有数百列名称不整齐,但可以用df上面的数据框近似。

我想用 替换所有值,NA除了0几列(在我的示例中,我想省略Date列和thatCol列。我想以这种方式进行操作:

下面显示了我完成“除此之外的所有内容”替换 NA 的不成功想法。

有没有办法以我需要的方式选择所有内容?有数百列,命名不一致,因此一一键入它们不是一个实际的选择。

0 投票
0 回答
221 浏览

r - 在编织 R 降价时尝试使用 tidyselect 函数创建新变量时 mutate_at 出错

我很可能遗漏了一些非常简单的东西,但我无法弄清楚为什么这个错误会持续存在于我的 mutate_at 函数中。

我正在尝试使用 mutate_at 在变量名称末尾添加后缀(“_cat”)的新列,但是在尝试选择包含“diff_”的变量时出现以下错误,我无法弄清楚为什么......: '(

编辑:

当我分段运行 R markdown 时,测试代码在我重新启动 R 后工作。但每当我尝试编织整个 markdown 工作簿时,错误消息仍然存在。这意味着我不能只重新启动 RStudio 来修复此错误。

我已经下载了最新版本的 R 和 RStudio,但仍然没有运气 :(。我想知道是否有人可以解释为什么会出现此错误消息?是 tidyselect 函数有问题吗?

谢谢!

编辑2:

作为参考,本节的完整代码为:

vars(contains("diff_")当我编织 Rmarkdown 时,问题似乎出在我代码的最后一行。目前,我有一个非常粗略的解决方法,我已经列出了变量,而不是这样:

我能够使用这种粗略的解决方法来编织输出,但是知道为什么我的第一次尝试失败以供将来参考会非常方便。

0 投票
1 回答
197 浏览

r - pivot_longer 与 tidyselect where,where 但没有谓词?

我正在尝试使用该tidyselect函数wherepivot_longer收到tidyselect包不支持谓词的错误。这似乎有点不合理,所以很可能我有语法错误。(我意识到 SO 不适用于代码调试。)我认为如果有人能告诉我如何完成这项任务,它会帮助我更好地理解。

这给出了我想要的结果。

但我想选择某些类型的字段。

证明它确实适用dplyr,所以我没有犯这个错误:(Tidyverse:这个 tidyselect 接口还不支持谓词