R:select语句中外部向量的弃用警告

dkqlctbz  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在处理几个数据集,我想从中选择变量(如果存在)。
我正在使用cookiecutter生成模板,它看起来或多或少像这样(与this SO question相关)。

{{cookiecutter.df}} %>%
  select(
    {{cookiecutter.var1}},
    {{cookiecutter.var2}},
    {{cookiecutter.var3}},
    {{cookiecutter.var4}}
    )

如果变量在此数据集中不可用,则将其转换为Python None类型。因此,我将此变量设置为NULL值。
我的问题是

library(tidyverse)

None <- NULL

mtcars %>%
  select(
    mpg,
    None,
    cyl,
    None
  )

这给了我以下的弃用警告。

Warning message:
Using an external vector in selections was deprecated in tidyselect 1.1.0.
ℹ Please use `all_of()` or `any_of()` instead.
  # Was:
  data %>% select(None)

  # Now:
  data %>% select(all_of(None))

See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.

这里的问题是什么,如何解决?我试着玩all_of()any_of(),但没有解决它。
注意:在我的示例中,None变量的双重使用指的是在我的数据集中不可用的两个变量,至少在这个示例中是这样。
我希望一切都很清楚,谢谢!如果没有,我会努力让它更清晰。

unftdfkk

unftdfkk1#

很难回答你的问题,因为你没有提供你预期的结果。我们无法知道您的真实的数据是什么样子,以及您想从中获得什么。
如果你想让select()在找不到变量时不会失败,你应该使用any_of()

library(dplyr)
mtcars %>%
  select(any_of(c("mpg", "cyl", "cookiecutter.var4"))) %>% 
  names()
#> [1] "mpg" "cyl"

创建于2023-05-10带有reprex v2.0.2
但是,不幸的是,您不能在此函数中使用无引号的语法。

相关问题