【问题标题】:loop: Replacing value at a certain position循环:在某个位置替换值
【发布时间】:2018-07-09 10:37:21
【问题描述】:

我有一个矩阵和一个向量,想改变向量中值为负的矩阵位置的值。

x <- c(1,-5,4,-8,9)

X <- matrix(c(5,7,3,
              -5,6,8,
              9,-6,4,
              2,-1,-3,
              5,2,4),byrow=TRUE, nrow=5)

对于 x 的所有值为 i

这应该是结果:

X2 <- matrix(c(5,7,3,
               5,-6,-8,
               9,-6,4,
               -2,1,3,
               5,2,4),byrow=TRUE, nrow=5)

这是我尝试过的,但它不起作用:

if (x[i] > 0) {
  X[i, ] <- (- X[i, ])
}
print(X)

【问题讨论】:

    标签: r loops replace


    【解决方案1】:

    这个怎么样?

    for (i in seq_along(x)) {
      if (x[i] < 0) {
        X[i, ] <- -X[i, ]
      }
    }
    
    print(X)
         [,1] [,2] [,3]
    [1,]    5    7    3
    [2,]    5   -6   -8
    [3,]    9   -6    4
    [4,]   -2    1    3
    [5,]    5    2    4
    

    数据

    x <- c(1,-5, 4, -8, 9)
    X <- matrix(
      c(5, 7, 3, -5, 6, 8, 9,-6, 4, 2, -1, -3, 5, 2, 4),
      byrow=TRUE,
      nrow=5
    )
    

    【讨论】:

      【解决方案2】:

      我认为你不需要循环,试试这个。

      X * sign(x)
      

      【讨论】:

        【解决方案3】:

        试试这个:

        x <- c(1,-5,4,-8,9)
        
        X <- matrix(c(5,7,3,
                      -5,6,8,
                      9,-6,4,
                      2,-1,-3,
                      5,2,4),byrow=TRUE, nrow=5)
        
        x
        X
        for(i in 1:length(x)){
          if (x[i] < 0) {
            X[i, ] <- - X[i, ]
          }
        }
        X
        

        【讨论】:

          猜你喜欢
          • 2015-12-15
          • 2019-01-30
          • 1970-01-01
          • 2021-09-24
          • 2010-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-14
          相关资源
          最近更新 更多