我想在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
但这会返回警告:
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
我收到错误消息:
错误:步进功能选择器中不允许使用所有功能(例如
all_of
(。请参阅"选择"。
在?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
有关警告的更多信息。您可能会将向量命名为与列名之一相同的情况。例如:
oxygen <- c("oxygen","nitrogen")
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
step_rm(oxygen)
这将仅删除oxygen
列。但是,如果使用!!!syms(oxygen)
,则将删除这两列。