gpt4 book ai didi

arrays - 为 r 中的索引对对数组进行子集

转载 作者:行者123 更新时间:2023-12-04 12:43:21 25 4
gpt4 key购买 nike

虽然我已经搜索过,但我找不到我的问题的直接答案。
假设我有一个数组:

    vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
result <- array(c(vector1,vector2),dim = c(3,3,2))

现在,我想以某种方式对这个数组进行子集化,以便从某些行和列中获取元素。例如:
result[1,3,1:2]
result[3,1,1:2]

因为我有很多索引,所以它们被分类
rowind=c(1,3)
colind=c(3,1)

对于子集,我尝试以这种方式使用行和列的向量
dim(result[rowind,colind,1:2])

[1] 2 2 2

这不是我想要的。我希望我的输出是每对索引的一个值。事实上,我希望我提取的矩阵的维度为 2x2(不是 2x2x2)。
让你知道我已经尝试过“循环”。但问题是我有很多数量的数组,这会非常耗时。
result_c=matrix(NA,nrow=2,ncol=2)

for (i in 1:2){
result_c[i,]=result[rowind[i],colind[i],]
}

谢谢你的帮助。

最佳答案

如果我理解正确,我们可以使用 Map

Map(function(i, j) result[i, j, 1:2], rowind, colind)
#[[1]]
#[1] 13 13
#
#[[2]]
#[1] 3 3

或简化为 matrix使用 mapply
mapply(function(i, j) result[i, j, 1:2], rowind, colind)
# [,1] [,2]
#[1,] 13 3
#[2,] 13 3
Mapmapply 的包装器这不会简化结果,从而产生 list (而不是 matrix )。

关于arrays - 为 r 中的索引对对数组进行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51192521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com