gpt4 book ai didi

r - 在具有更新角色条件的 R 配方中不起作用

转载 作者:行者123 更新时间:2023-12-04 08:33:34 26 4
gpt4 key购买 nike

variable_names包含我想更新那些角色以成为 Not_predictors 的名字;而如果 variable_names是 NA 我想在函数中跳过这一步。但是,在添加条件时,我得到并出错。请参阅下面的 repex 代码。

# Example Data
pred1 <- c(4,2,1)
pred2 <- c(4,2,1)
pred3 <- c(4,2,1)
pred4 <- c(4,2,1)
id_nr <- c(1, 2, 3)
y <- c(1,5,2)

data <- tibble::tibble(pred1, pred2, pred3, pred4, id_nr, y)

# Want to remove thes variables from predictor role if variable_names is not NA
variable_names <- c("pred1", "pred2")


# Without condition it works
recipe <- data %>%
recipes::recipe(y ~ .) %>%
recipes::update_role(id_nr, new_role = "id variable") %>%
recipes::update_role(dplyr::all_of(variable_names), new_role = "Not_predictors") %>%
recipes::step_pca(., recipes::all_predictors(), num_comp = 2) %>%
recipes::prep()
recipe


# But when adding the condition I get error.
recipe <- data %>%
recipes::recipe(y ~ .) %>%
recipes::update_role(id_nr, new_role = "id variable") %>%
{
if(!is.na(variable_names[1])){
recipes::update_role(dplyr::all_of(variable_names), new_role = "Not_predictors")
} else {
.
}
} %>%
recipes::step_pca(., recipes::all_predictors(), num_comp = 2) %>%
prep()
recipe

这是错误:
Error: $ operator is invalid for atomic vectors
In addition: Warning message:
No selectors were found
任何帮助深表感谢。

最佳答案

我收到了来自 RStudio community 的解决方案:

recipe <- data %>%
recipes::recipe(y ~ .) %>%
recipes::update_role(id_nr, new_role = "id variable") %>%
(function(x){
if(!is.na(variable_names[1])){
x %>% recipes::update_role(dplyr::all_of(variable_names), new_role = "Not_predictors")
} else {
x
}
}) %>%
recipes::step_pca(., recipes::all_predictors(), num_comp = 2) %>%
recipes::prep()
recipe

关于r - 在具有更新角色条件的 R 配方中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64913686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com