首页 > 解决方案 > 通过 for 循环在某些变量上自动化 as.factor 函数

问题描述

as.factor()我在以下变量列表中的函数迭代中苦苦挣扎。

d$block <- as.factor(d$block)
d$CR <- as.factor(d$CR)
d$T1.ACC <- as.factor(d$T1.ACC)
d$T1.correct <- as.factor(d$T1.correct)
d$T1.response <- as.factor(d$T1.response)

我想知道如何使用 for 循环创建一些代码行以在这样的列表上迭代 as.factor 函数。实际上我使用了以下代码

d %>% 
  dplyr::select(
    block, CR, T1.ACC, T1.correct, T1.response) %>% 
  lapply(., as.factor) %>% 
  lapply(., is.factor)

但是,当要单独验证变量时,这似乎不起作用。

> is.factor(d$block)
[1] FALSE

哪一个可能是问题?如何编写一个好的 for 循环?感谢回复

标签: rfor-loop

解决方案


您可以使用dplyr'across功能:

library(dplyr)

d <- d %>%
  mutate(across(c(block, CR, T1.ACC, T1.correct, T1.response), as.factor))

如果你真的想使用for-loop,你可以使用

for (i in c("block", "CR", "T1.ACC", "T1.correct", "T1.response")){
  
  d[, i] <- as.factor(d[, i])
}

推荐阅读