我有一個大矩陣(500行×30000列)的零和一個。爲此,我添加了包含0和1之間的值的行501.如果行501中的值對於列x> 0.5,我想用1中的所有零和全部1替換該列中的零。我已經實現代碼如下:如何替換矩陣的指定列中的元素?
for(x in 1:30000){
if (matrix[501,x] > 0.5){
for(y in 1:500){
matrix[matrix[y,x]==1] <- 0
matrix[matrix[y,x]==0] <- 1
}
}
}
matrix
此代碼連續運行,並且我停止它之前已經走了長達2個小時,所以我沒有錯誤消息的報告。我怎樣才能清理它?我究竟做錯了什麼?
您使用的爲O(n^2)算法,此外,循環被設定爲R非常緩慢。閱讀這篇文章http://bigocheatsheet.com/。這會讓您瞭解如何重寫您的代碼 –
還要注意,您的第一條替換線將由您的第二條替換線撤消。 – lmo
謝謝lmo和Kppatel。沒想到,也許我陷入了一個更換的循環。 – Dirigible