R数组,自第一次出现特定值以来对行进行计数

问题描述 投票:1回答:1

我需要找出一种方法,可以按列读取2d数组并找到特定条目的第一个实例(在本例中为3),然后对行进行递减计数,以使每行递增连续的行。我试过了apply语句,但是它在两个边界中都有效,并且在返回inf的函数上也遇到了一些麻烦。这是我的力量。 Thx.J

arr1 <- as.array (matrix (c (NA, NA, 8, NA, 2, 3, 3,
                             NA, 3, 8, NA, 2, 3, 3,
                             3, NA, 8, NA, 9, 5, 2),
           ncol = 3)
          )

> arr1
     [,1] [,2] [,3]
[1,]   NA   NA    3
[2,]   NA    3   NA
[3,]    8    8    8
[4,]   NA   NA   NA
[5,]    2    2    9
[6,]    3    3    5
[7,]    3    3    2

所以我需要在每列中找到3的第一个实例,即r6c1,r2c2,r1,c3,我可以使用此来找到它们]

apply(arr1, 2, function (x) min(which(x == 3 )))

但是后来我迷路了。我希望得到的最终产品看起来像这样,以数组格式

> arr2
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    1
[3,]    0    1    2
[4,]    0    2    3
[5,]    0    3    4
[6,]    0    4    5
[7,]    1    5    6

我需要找出一种按列读取2d数组并找到特定条目的第一个实例(在本例中为3,然后对行进行递减计数以使每一行递增的方法...

r arrays apply
1个回答
0
投票

您几乎拥有它,只需要剔除0和增量,我还添加了一个if,否则,因为在没有“ 3”的情况下,它将抛出错误:


0
投票

也许这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.