Как поставить применить эквивалент любого цикла 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

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос