首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tidymodels配方:使用all_of选择存储在向量中的变量

tidymodels配方:使用all_of选择存储在向量中的变量
EN

Stack Overflow用户
提问于 2020-05-13 21:36:39
回答 1查看 694关注 0票数 0

我想为tidymodels配方包中的各种步骤函数使用带有列名的向量。我的直觉只是简单地使用(这里所用的prepjuice ):

代码语言:javascript
复制
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

但这将返回警告:

代码语言:javascript
复制
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中使用以下内容时

代码语言:javascript
复制
test_recipe <- recipe(HHV ~ .,data = biomass) %>%
  step_rm(all_of(remove_vector))

test_recipe %>% 
  prep %>% 
  juice %>% 
  head

我得到了错误消息:

错误:步骤函数选择器(例如all_of)中并不允许所有函数。看到了吗?选择。

?selections中,我似乎没有找到确切(看似简单)问题的参考。

有什么想法吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 05:38:31

如果使用准引号,就不会收到警告:

代码语言:javascript
复制
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

更多关于警告的内容。可能发生的情况是,您将向量命名为与您的列名相同。例如:

代码语言:javascript
复制
oxygen <- c("oxygen","nitrogen")

test_recipe <- recipe(HHV ~ .,data = biomass) %>%
  step_rm(oxygen)

这将只删除oxygen列。但是,如果使用!!!syms(oxygen),则将删除这两列。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61785299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档