2016-05-26 7 views
1

Если у меня есть вызов data.frame MyDF с 108 переменными, и я хочу применить factor(MyDF[, OnColumns 8 to 100]. Как мне это сделать?применить функцию ко всем всем строкам определенных столбцов в R

Так в псевдокоде:

for(i=8, i < 101, i++) 
{ 
    # apply factor() to each column from 8 to 100 
    factor(MyDF[,i]) 
} 

Имеет ли это смысл?

+1

см [этот ответ] (http://stackoverflow.com/a/ 9252447/4137985) [этого вопроса] (http://stackoverflow.com/questions/9251326/convert-data-frame-column-format-from-character-to-factor) – Cath

ответ

5

Вы можете создать вектор с колоннами, которые должны быть преобразованы в фактор и использовать lapply итерировать factor над этими колоннами

tofactors <- 8:100 
df[,tofactors] <- lapply(df[,tofactors], factor) 
+0

Thats сделал трюк, но я ожидал значений для преобразования из 2 и 3 в 0 и 1, но они не были. Они теперь имеют 2 уровня, но значения 2 и 3, как я могу конвертировать в 0s и 1s – Gordon

+0

@Gordon Почему вы хотите изменить уровни факторов? В любом случае это не имеет значения. – Sotos

+1

@ Gordon, что вы видите, на самом деле являются ярлыками. R хранит факторы как положительные целые числа, поэтому их фактические значения равны 1 и 2. Вероятно, вы можете подавать «factor» 0 и 1 ярлыками с аргументом метки. – lmo