ほとんどのプロ 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)
}
ここでの目的は、値 == 1 を持つすべての列名の値を取る変数「ObjTrim」を作成することです。誰かがこれに相当する適切な適用を提案できますか?
たとえば、上記のコードは次のようになります。
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
ありがとう!