gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:33:48 26 4
gpt4 key购买 nike

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

例子:

library(dplyr)
set.seed(123)
df = data.frame(
"id" = c(rep("G1", 3), rep("G2", 4), rep("G3", 3)),
"total" = sample.int(n = 10),
"C1" = sample.int(n=10),
"C2" = sample.int(n=10),
"C3" = sample.int(n=10))
cols.to.sum = c("C1", "C2")
df.selected = df %>%
dplyr::select(total, cols.to.sum)

给予:
Note: Using an external vector in selections is ambiguous.
i Use `all_of(cols.to.sum)` instead of `cols.to.sum` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.

如果我重构为:
df.selected = df %>% 
dplyr::select(total, all_of(cols.to.sum))

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

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

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

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

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

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

谢谢

最佳答案

如果应该是您第一个问题中的操作短语,那么这可能只是确保您的任何变量都未命名 cols.to.sum 的问题。 .只要是这种情况,使用 all_of() 的属性不会与您的用例相关,您可以保留 select像往常一样。
如果您不想坚持使用旧版本的 tidyselect suppress library可能会有所帮助

关于r - tidyselect 更改了在 R 中选择函数时如何引用变量名称的外部向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61026514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com