Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 计算矩阵列表中的元素数,并根据条件返回它_R - Fatal编程技术网

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