R - 麻烦循环数据帧并将因子分解

时间:2016-04-05 09:15:43

标签: r dataframe

我有一个包含> 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])

2 个答案:

答案 0 :(得分:1)

您应该使用[]运算符在for循环中对数据帧进行子集化:

for (i in my_variables_list) {
    df[,i] = as.factor(df[,i])
}

答案 1 :(得分:1)

iris避免循环的示例。我们首先在Sepal的合命名中查找模式Sepaliris,然后将这些列转换为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)