我有一个包含> 100列的数据框,所有这些都是INT。
我已经列出了一些我想要分解的列,允许我进行ANOVA,比如说
my_variables_list = headers[grep('independent', headers)]
现在我想循环遍历所有这些变量和因子:
for (i in my_variables_list) {
df$i = as.factor(df$i)
}
但是这不起作用 - 没有返回错误消息,但也没有对df进行任何更改。同样,如果我尝试运行一行,它也会失败。
df$my_variables_list[10] <- as.factor(df$my_variables_list[10])
答案 0 :(得分:1)
您应该使用[]
运算符在for循环中对数据帧进行子集化:
for (i in my_variables_list) {
df[,i] = as.factor(df[,i])
}
答案 1 :(得分:1)
iris
避免循环的示例。我们首先在Sepal
的合命名中查找模式Sepal
或iris
,然后将这些列转换为lapply
my_variables_list = grep('Petal|Sepal', colnames(iris))
iris[, my_variables_list] <- lapply(iris[, my_variables_list], as.factor)
或者你data.frame:
df[,my_variables_list] <- lapply(df[, my_variables_list], as.factor)