Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何替换矩阵中指定列中的元素?_R - Fatal编程技术网

R 如何替换矩阵中指定列中的元素?

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] <

我有一个由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] <- 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]