首页 > 解决方案 > 根据条件返回数组中矩阵的索引

问题描述

大家好,我有一组 1 和 0 的矩阵。对于每一行(代表一个人),我想知道第一个出现的矩阵(维度 z)的索引。

我试图创建一个应用于数组的函数,返回一个向量,其中包含每个人的矩阵索引。

A= rbind(c(1,0),c(0,0))
B=rbind(c(0,1),c(1,0))
c<- array( c( A , B) , dim = c( 2 , 2 , 2 ) )

get.first <- function(x)min(which(x !=0 ))
f <- sapply( c,get.first)

我希望得到的向量 f 等于

f=c(1,2) 表示第一个个体记录在第一个矩阵中,第二个个体记录在第二个矩阵中。

消息错误返回 4 次

1:在 min(which(x != 0)) 中:min 没有非缺失参数;返回 Inf

标签: r

解决方案


您需要使用apply而不仅仅是sapply,并告诉apply要映射get.first的边距。

apply(c,3,get.first)评估为c(1,2)

切线地,c用作数组的名称有点令人困惑,因为c它也是核心 R 函数的名称。


推荐阅读