かなり大きな(〜1,000,000行)データフレームを操作するforループを書きましたが、動作が遅すぎるためオンラインで何も見つかりませんでした。forループなしでデータフレームを操作する
df=data.frame(v1=runif(10), v2=runif(10), v3=runif(10), v4=0, v5=0, v6=0, v7=0)
for(i in 1:dim(df)[1]) {
df[i,4]=length(which(df[i,1:3]>0.00 & df[i,1:3]<0.10))
df[i,5]=length(which(df[i,1:3]>0.10 & df[i,1:3]<0.50))
df[i,6]=length(which(df[i,1:3]>0.50 & df[i,1:3]<0.90))
df[i,7]=length(which(df[i,1:3]>0.90 & df[i,1:3]<1.00))
}
私はこれを行うための関数を記述しようとしたが、それは一緒にすべての行を追加します。あなたが主なアイデアである必要条件と
test.fun <- function (df) {
df[,4]=length(which(df[,1:3]>0.00 & df[,1:3]<0.10))
df[,5]=length(which(df[,1:3]>0.10 & df[,1:3]<0.50))
df[,6]=length(which(df[,1:3]>0.50 & df[,1:3]<0.90))
df[,7]=length(which(df[,1:3]>0.90 & df[,1:3]<1.00))
return(df)
}
(test <- test.fun(df))
これは私には意味を作っていません。これらの長さは単一の数値になりますが、列全体に割り当てられています。 –
Erik、私はあなたのプロフィールであなたに(善い)質問をしたが、どれも回答を受け入れていないことが分かりました。 。 [誰かが私の質問に答えるとどうすればいいですか?](https://stackoverflow.com/help/someone-answers)と[なぜ私はそれをするべきですか?](https://meta.stackexchange.com/questions)をお読みください。/5234/how-does-accept-an-answer-work) – Masoud