R中的嵌套循环矩阵索引
nested loop matrix index in R
我正在学习 R 中的矩阵乘法,以下是我想要实现的目标。我这样做纯粹是为了提升我在 R 方面的技能。
以下是我正在使用的矩阵类型:
m <- matrix(1, 100, 10)
我的矩阵只有 1
元素,有 100 行和 10 列。现在我想用第 1 行到第 10 行的 0 替换第 1 列。然后对于第二列,我想用第 11 行到第 20 行的零替换 1。同样对于第三列,我想用第 21 行到第 30 行的零替换 1,同样对于第 10 列的其余部分。以我为榜样
m <- matrix(1, 100, 10)
for(j in 1:10){
for(i in (j-1)*10+1: j*10){
m[i,j] <-0
}
}
我非常自信我的逻辑是正确的,但每次我 运行 我的代码时,我都会收到以下错误消息 下标越界调用 。我现在试了几天,但我无法解决这个问题。如果有任何提示或直接解决方案来解决此问题,我将不胜感激。非常感谢。
你可以只使用一个变量,我认为这样会更容易。对于每一列 j,获取行索引的下限和上限范围并指定为 0。
for(j in 1:10){
row_lower <- (j-1)*10+1
row_upper <- j*10
m[row_lower: row_upper, j] <- 0
}
Returns 0 在您指定的范围内。
我正在学习 R 中的矩阵乘法,以下是我想要实现的目标。我这样做纯粹是为了提升我在 R 方面的技能。 以下是我正在使用的矩阵类型:
m <- matrix(1, 100, 10)
我的矩阵只有 1
元素,有 100 行和 10 列。现在我想用第 1 行到第 10 行的 0 替换第 1 列。然后对于第二列,我想用第 11 行到第 20 行的零替换 1。同样对于第三列,我想用第 21 行到第 30 行的零替换 1,同样对于第 10 列的其余部分。以我为榜样
m <- matrix(1, 100, 10)
for(j in 1:10){
for(i in (j-1)*10+1: j*10){
m[i,j] <-0
}
}
我非常自信我的逻辑是正确的,但每次我 运行 我的代码时,我都会收到以下错误消息 下标越界调用 。我现在试了几天,但我无法解决这个问题。如果有任何提示或直接解决方案来解决此问题,我将不胜感激。非常感谢。
你可以只使用一个变量,我认为这样会更容易。对于每一列 j,获取行索引的下限和上限范围并指定为 0。
for(j in 1:10){
row_lower <- (j-1)*10+1
row_upper <- j*10
m[row_lower: row_upper, j] <- 0
}
Returns 0 在您指定的范围内。