R 如何替换矩阵中指定列中的元素?
我有一个由0和1组成的大矩阵(500行30000列)。在此基础上,我添加了第501行,其中包含0到1之间的值。如果第501行中x列的值大于0.5,我想将该列中的所有0替换为1,并将所有1替换为0。我已经实现了以下代码:R 如何替换矩阵中指定列中的元素?,r,R,我有一个由0和1组成的大矩阵(500行30000列)。在此基础上,我添加了第501行,其中包含0到1之间的值。如果第501行中x列的值大于0.5,我想将该列中的所有0替换为1,并将所有1替换为0。我已经实现了以下代码: 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] <
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
for(1:30000中的x){
if(矩阵[501,x]>0.5){
对于(y为1:500){
矩阵[matrix[y,x]==1]您可以使用x将0->1和1->0一起翻转您可以使用正在使用的x将0->1和1->0一起翻转O(n^2)算法,此外,循环在r中非常慢。阅读本文。这将使您了解如何重写您的代码注释,并且您的第一个替换行将被第二个替换行撤消。感谢lmo和Kppatel。没有想到我可能被困在替换循环中。您正在使用O(n^2)此外,算法在r中的循环速度非常慢。阅读本文。这将为您提供如何重写代码的见解。请注意,您的第一个替换行将被第二个替换行撤消。感谢lmo和Kppatel。没有想到我可能陷入了一个替换循环中。而且!matrix[1:500,toFlip]
工作正常(!x
将0翻转为1,反之亦然)。我想这取决于你想要的是数字还是布尔值。另外,!矩阵[1:500,toFlip]
工作(!x
将0翻转为1,反之亦然)。我想这取决于你想要的是数字还是布尔值。
toFlip <- matrix[501,] > 0.5
matrix[1:500, toFlip] <- 1 - matrix[1:500,toFlip]