loop:替换某个位置的值

Mel*_*eli 2 loops replace r

我有一个矩阵和一个向量,并希望更改矩阵位置的值,其中向量中的值为负.

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)
Run Code Online (Sandbox Code Playgroud)

对于x的所有值,其中i <0取位置并在X的整个行中的该位置乘以-1

这应该是结果:

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

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

if (x[i] > 0) {
  X[i, ] <- (- X[i, ])
}
print(X)
Run Code Online (Sandbox Code Playgroud)

小智 6

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

X * sign(x)
Run Code Online (Sandbox Code Playgroud)