替换数组中的元素错误

时间:2017-12-12 17:09:39

标签: arrays r for-loop edge

所以我试图为R中的一些PNG图像实现边缘检测功能。我的函数运行正常 - 获取一个数组并使每个数值成为它附近值的标准偏差。然后,我在照片(边缘)的标准偏差的前1%中找到值的索引。

但是,当我尝试用" 1"替换这些索引时,我遇到了一个奇怪的问题。我写的代码如下:

vg_new <- vg
for (i in nrow(outlier_indices)){
  row <- outlier_indices[i,1] ; column <- outlier_indices[i,2]
  vg_new[row, column, 1] <- 1
  vg_new[row, column, 2] <- 1
  vg_new[row, column, 3] <- 1
}

对于某些背景,vg_new(和vg)是图片 - 它们每个都是3个矩阵的数组,每个374x800。 outlier_indices是我的64255x2索引矩阵,第一列是行索引,第二列是列索引。

因此,我试图用&#34; 1&#34;替换每个颜色通道中的正确索引(vg_new中的每个单独的矩阵)。但是,当我运行此循环时,实际上没有任何变化。但是,当我运行类似的东西时:

vg_new[50, 1, 1] <- 1

索引更改没问题。我已经检查过以确保所有指数都在&#34; outlier_indices&#34;存在于&#34; vg_new&#34;他们都这样做。关于这里发生了什么的任何想法?我错过了一些明显的东西吗?

编辑:这是一个最小,完整且可验证的示例。

vg <- array(0, c(374, 800, 3))
outlier_indices <- matrix(c(1:50), c(1:50), nrow = 50, ncol = 2)
for (i in nrow(outlier_indices)){
  row <- outlier_indices[i,1] ; column <- outlier_indices[i,2]
  vg[row, column, 1] <- 1
  vg[row, column, 2] <- 2
  vg[row, column, 3] <- 3
}

0 个答案:

没有答案