r语言 - tidymodels recipe:使用 all_of 选择存储在向量中的变量



我想在tidymodels配方包中使用带有列名的向量来执行各种步骤函数。我的直觉只是使用(这里只是用来说明的prepjuice(:

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),则将删除这两列。

相关内容

  • 没有找到相关文章

最新更新