大多数专业 R 用户都建议我不要在 R 中使用循环。改用应用函数。问题是,如果您不熟悉函数式编程,那么为每个 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
谢谢!