循环:替换某个位置的值

时间:2018-01-30 13:56:28

标签: r loops replace

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

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

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

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

3 个答案:

答案 0 :(得分:6)

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

<td style="height:75px">
  <div style="height: 75px; opacity: 0.99;" id="MSOPictureLibrarySlideshowWebPart_ctl00_ctl40_g_79ca5882_ef72_482a_9f70_94b4a8c6804e_text">
    <span id="MSOPictureLibrarySlideshowWebPart_ctl00_ctl40_g_79ca5882_ef72_482a_9f70_94b4a8c6804e_title" class="ms-slideshow-title"></span><br>
  </div>
</td>

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

这个怎么样?

uiOutput

数据

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