R 计算矩阵列表中的元素数,并根据条件返回它
假设我有一个矩阵列表。我想计算每个对应位置的值。例如,有两个矩阵。位置R 计算矩阵列表中的元素数,并根据条件返回它,r,R,假设我有一个矩阵列表。我想计算每个对应位置的值。例如,有两个矩阵。位置[2,1]处的值数仅为一个值。但是,在位置[3,1]处有两个值 [[1]] [,1] [,2] [,3] [,4] [,5] [1,] 0.00 0.00 0.00 0.00 0 [2,] 0.25 0.00 0.00 0.00 0 [3,] 0.25 0.25 0.00 0.00 0 [4,] 0.25 0.25 0.25 0.00 0 [5,] 0.00 0.25 0.25 0.00
[2,1]
处的值数仅为一个值。但是,在位置[3,1]
处有两个值
[[1]]
[,1] [,2] [,3] [,4] [,5]
[1,] 0.00 0.00 0.00 0.00 0
[2,] 0.25 0.00 0.00 0.00 0
[3,] 0.25 0.25 0.00 0.00 0
[4,] 0.25 0.25 0.25 0.00 0
[5,] 0.00 0.25 0.25 0.00 0
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 0.00 0.00 0.00 0.00 0
[2,] 0.00 0.00 0.00 0.00 0
[3,] 0.25 0.00 0.00 0.00 0
[4,] 0.25 0.5 0.25 0.00 0
[5,] 0.00 0.00 0.25 0.25 0
我所期望的
我想计算每个位置的值的数量。例如,位置[3,1]
处有多少个值。计数跨越矩阵。也就是说,如果我有10个
矩阵,那么在所有矩阵的[3,1]
位置有多少个值。在我的示例中,只有两个矩阵,[3,1]
处的值数为两个
对于每个位置,如果计数等于1
(输出为=1
),则按原样返回。但是,如果计数输出为
1
,则计数器将其减去1
。也就是说,假设:
outcount=10
##位置[1,3]
处的输出。然后,按如下方式返回它:newcount=outcount-1
需要帮忙吗?我正在考虑计数,但是,我不知道如何实现它 假设我们正在计算非零值的数量,我们循环通过
列表
,将矩阵
es转换为逻辑
,并通过获得和来减少
out <- Reduce('+', lapply(l, '!=', 0))
i1 <- out > 1
out[i1] <- out[i1] - 1
out不清楚您的预期输出。请更新<代码>减少('+',lappy(l',!=',0))
确定。谢谢你的评论。你说只有两个矩阵,[3,1]处的值是两个不需要减去1吗?是的。值的数量为2,返回值必须为1
。请检查我发布的解决方案。根据你的描述,它应该对你很有用。我不是指总数。我的意思是计算矩阵中的数值。@F.AMER是的,这就是它所做的。当两个真值相加时,它变为2Ok。我现在明白了。我将应用它并查看。@F.AMER我刚刚根据您的第二个条件更新了我的帖子,即如果非零元素的数量大于1,则减去1