我如何修改此代码块以重新编码我的数据框中的所有 ~400 个变量,而不仅仅是一个?

How can I modify this code chunk to recode all ~400 variables in my dataframe and not just one?

我在 R 中写了这个来伪造一个由“0”或字符响应(如“sh6sej”)组成的字符变量,这样所有字符响应都变为 1,所有 0 都变为 0。它对于一个变量工作正常。

但是,有没有办法修改它,以便它一次对我的数据框中的所有 400 个变量进行虚拟编码?

谢谢!

recode_mut <- function(var = "adgra2_mut", data=data_train) {
   recoded <- ifelse(data_train[[var]] == 0, 0,
                           ifelse(data_train[[var]] != 0, 1, NA))
   return(recoded)
}

recode_mut(var = "adgra2_mut")

我们可以使用 mutateacross

library(dplyr)
out <- data_train %>%
     mutate(across(everything(), ~ as.integer(. != 0)))

或使用base R

out <- as.data.frame(+(data_train != 0))