我有一个大矩阵(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