tidymodels 秘诀:使用存储在向量中的 all_of 到 select 变量
tidymodels recipe: Using all_of to select variables stored in a vector
我想对 tidymodels
配方包中的各种步骤函数使用带有列名的向量。我的直觉是简单地使用(prep
和 juice
只是在这里用于说明):
library(tidymodels)
library(modeldata)
data(biomass)
remove_vector <- c("oxygen","nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(remove_vector)
test_recipe %>%
prep %>%
juice %>%
head
但是这个returns警告:
Note: Using an external vector in selections is ambiguous.
i Use `all_of(remove_vector)` instead of `remove_vector` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.
这当然让我很担心(我想确保我在编码时不会遇到错误消息),但我仍然得到了我想要的结果。
但是,当我按照错误消息进行操作并将以下内容与 all_of
一起使用时:
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(all_of(remove_vector))
test_recipe %>%
prep %>%
juice %>%
head
我收到错误消息:
Error: Not all functions are allowed in step function selectors (e.g. all_of
). See ?selections.
在 ?selections
中,我似乎没有找到对我遇到的确切(看似简单)问题的参考。
有什么想法吗?
非常感谢!
如果您使用准引号,您将不会收到警告:
library(tidymodels)
library(modeldata)
data(biomass)
remove_vector <- c("oxygen", "nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(!!!syms(remove_vector))
test_recipe %>%
prep %>%
juice %>%
head
有关警告的更多信息。可能会发生您将 vector 命名为与您的列名之一相同的情况。例如:
oxygen <- c("oxygen","nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(oxygen)
这只会删除 oxygen
列。但是,如果您使用 !!!syms(oxygen)
,则两列都将被删除。
我想对 tidymodels
配方包中的各种步骤函数使用带有列名的向量。我的直觉是简单地使用(prep
和 juice
只是在这里用于说明):
library(tidymodels)
library(modeldata)
data(biomass)
remove_vector <- c("oxygen","nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(remove_vector)
test_recipe %>%
prep %>%
juice %>%
head
但是这个returns警告:
Note: Using an external vector in selections is ambiguous.
i Use `all_of(remove_vector)` instead of `remove_vector` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.
这当然让我很担心(我想确保我在编码时不会遇到错误消息),但我仍然得到了我想要的结果。
但是,当我按照错误消息进行操作并将以下内容与 all_of
一起使用时:
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(all_of(remove_vector))
test_recipe %>%
prep %>%
juice %>%
head
我收到错误消息:
Error: Not all functions are allowed in step function selectors (e.g.
all_of
). See ?selections.
在 ?selections
中,我似乎没有找到对我遇到的确切(看似简单)问题的参考。
有什么想法吗? 非常感谢!
如果您使用准引号,您将不会收到警告:
library(tidymodels)
library(modeldata)
data(biomass)
remove_vector <- c("oxygen", "nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(!!!syms(remove_vector))
test_recipe %>%
prep %>%
juice %>%
head
有关警告的更多信息。可能会发生您将 vector 命名为与您的列名之一相同的情况。例如:
oxygen <- c("oxygen","nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(oxygen)
这只会删除 oxygen
列。但是,如果您使用 !!!syms(oxygen)
,则两列都将被删除。