You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从三维数组按条件返回对应值及来源索引(输出指定形状)

解决方法

我来帮你搞定这个R语言的需求,咱们一步步来实现:

首先先把你的三维数组定义好:

arr <- array(data = c(0.1, 0.52, 0.3, 0.4, 0.15, 0.2, 0.7, 0.8), dim = c(2, 2, 2))

先把三维数组里的两个二维切片单独提取出来,方便后续操作:

mat1 <- arr[,,1]  # 第一个2×2矩阵
mat2 <- arr[,,2]  # 第二个2×2矩阵

1. 生成值结果矩阵res1

咱们用嵌套的ifelse()函数来实现你要的判断逻辑:先检查第一个矩阵的元素是否大于0.5,满足的话就取这个值;如果不满足,再检查第二个矩阵的对应元素是否大于0.5,满足就取第二个矩阵的值;要是两个都不大于0.5,就返回NA。代码如下:

res1 <- ifelse(mat1 > 0.5, mat1, ifelse(mat2 > 0.5, mat2, NA))

运行后得到的res1完全符合你的预期:

[,1] [,2]
[1,]   NA  0.7
[2,] 0.52  0.8

2. 生成来源索引矩阵res2

逻辑和res1一致,只是把返回值换成来源的索引(1表示来自第一个切片,2表示来自第二个切片):

res2 <- ifelse(mat1 > 0.5, 1, ifelse(mat2 > 0.5, 2, NA))

这里要提一句:你给出的期望res2里,[1,2]写的是1,但实际上0.7是来自第二个切片(arr[,,2][1,2]),所以正确的res2结果应该是:

[,1] [,2]
[1,]   NA    2
[2,]    1    2

如果之后有特殊情况需要调整规则(比如两个位置的元素都大于0.5时的处理逻辑),随时修改嵌套的判断条件就可以啦~

内容的提问来源于stack exchange,提问作者Tpellirn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:10:10