我寫了一個for循環來處理一個相當大(〜1,000,000行)的數據幀,但是它運行速度太慢,我在網上找不到任何東西。在沒有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-accepting-an-answer-work) – Masoud