Как поставить применить эквивалент любого цикла for
Большинство профессиональных пользователей R советуют мне никогда не использовать циклы в R. Вместо этого используйте функции apply. Проблема в том, что не так интуитивно писать эквивалент для каждого цикла for / while, если вы не знакомы с функциональным программированием. Возьмите приведенный ниже пример.
F <- data.frame(name = c("a", "b", "c", "d"), var1 = c(1,0,0,1), var2 = c(0,0,1,1),
var3 = c(1,1,1,1), clus = c("one", "two", "three", "four"))
F$ObjTrim <- ""
for (i in 1:nrow(F))
{
for (j in 2:(ncol(F)-1))
{
if(F[i, j] == 1)
{F$ObjTrim[i] <- paste(F$ObjTrim[i], colnames(F)[j], sep = " ") }
}
print(i)
}
Цель здесь состоит в том, чтобы создать переменную «ObjTrim», которая принимает значение всех имен столбцов, имеющих значение == 1. Может ли кто-нибудь предложить хороший эквивалент, эквивалентный этому?
Код выше, например, даст:
name var1 var2 var3 clus ObjTrim
1 a 1 0 1 one var1 var3
2 b 0 0 1 two var3
3 c 0 1 1 three var2 var3
4 d 1 1 1 four var1 var2 var3
Спасибо!