R 访问(并填充)数组中的不同行
假设我有一个三维数组:R 访问(并填充)数组中的不同行,r,R,假设我有一个三维数组: a <- array(dim = c(3, 2, 3)) 使用mapply mapply(function(x, y) {a[x,,y] <<- 1;a}, ind, ind) a # , , 1 # # [,1] [,2] # [1,] 1 1 # [2,] NA NA # [3,] NA NA # # , , 2 # # [,1] [,2] # [1,] NA NA # [2,] 1 1 # [
a <- array(dim = c(3, 2, 3))
使用
mapply
mapply(function(x, y) {a[x,,y] <<- 1;a}, ind, ind)
a
# , , 1
#
# [,1] [,2]
# [1,] 1 1
# [2,] NA NA
# [3,] NA NA
#
# , , 2
#
# [,1] [,2]
# [1,] NA NA
# [2,] 1 1
# [3,] NA NA
#
# , , 3
#
# [,1] [,2]
# [1,] NA NA
# [2,] NA NA
# [3,] 1 1
注意:如果您发现控制台输出不必要,请使用
mappy
在代码周围缠绕一个不可见()
mapply(function(x, y) {a[x,,y] <<- 1;a}, ind, ind)
a
# , , 1
#
# [,1] [,2]
# [1,] 1 1
# [2,] NA NA
# [3,] NA NA
#
# , , 2
#
# [,1] [,2]
# [1,] NA NA
# [2,] 1 1
# [3,] NA NA
#
# , , 3
#
# [,1] [,2]
# [1,] NA NA
# [2,] NA NA
# [3,] 1 1
注意:如果您发现控制台输出不必要,请在代码周围缠绕一个不可见()
。另一种替代方法,它可以在一个步骤中替换所有内容。当它的参数是矩阵时,它利用了[
的操作,每列在数组的维度上建立索引
为了确认它将值放在我们想要的地方,我将把替换矩阵修改为1:6
#原始数据
一种另一种替代方法,在一个步骤中替换所有内容。当其参数为矩阵时,它利用[
的操作,每列在数组的维度上建立索引
为了确认它将值放在我们想要的地方,我将把替换矩阵修改为1:6
#原始数据
a您的ind
有重复,我们可能可以开始工作,但对我来说,这可能是一个逻辑缺陷。我知道您试图提供一个简单的可复制样本(可以用更小的尺寸完成),所以可能是人为的。好(非常treu)让我来编辑!您的ind
有重复,我们可能可以开始工作,但对我来说,这可能是一个逻辑缺陷。我知道您试图提供一个简单的可复制样本(可以用更小的尺寸完成),所以可能只是人为的。好的(非常复杂)让我来编辑!
, , 1
[,1] [,2]
[1,] 1 1
[2,] NA NA
[3,] NA NA
, , 2
[,1] [,2]
[1,] NA NA
[2,] 1 1
[3,] NA NA
, , 3
[,1] [,2]
[1,] NA NA
[2,] NA NA
[3,] 1 1
mapply(function(x, y) {a[x,,y] <<- 1;a}, ind, ind)
a
# , , 1
#
# [,1] [,2]
# [1,] 1 1
# [2,] NA NA
# [3,] NA NA
#
# , , 2
#
# [,1] [,2]
# [1,] NA NA
# [2,] 1 1
# [3,] NA NA
#
# , , 3
#
# [,1] [,2]
# [1,] NA NA
# [2,] NA NA
# [3,] 1 1
sapply(ind, function(x) {a[x,,x] <<- 1;a})