如何获取特定行数
How to get the number of specific rows
我有两个矩阵:
A <- structure(c(0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
0, 0, 1), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("a", "b"
)))
B <- structure(c(1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("c", "d"
)))
我资助 A 中包含第一个“1”的行数:
a_1 <- t(as.matrix(max.col(t(A) == 1, "first")))
它 return “4 , 3”。
现在我需要知道 B 中包含第一个“1”的行数,在我从 A 输出的行之后(分别为“4”和“2”)。我期望的结果是 B 的第一列为“5”,第二列为“NA”(或类似的东西)。
我能怎么做?感谢您的帮助!
也许这有帮助
apply((row(B) >c(a_1)[col(B)]) * B, 2, \(x) which(x==1)[1])
c d
5 NA
这里有一个方法:
sapply(seq_along(a_1), \(i) {
k =which(B[,i]==1);k[which(k>a_1[i])][1]
})
输出:
[1] 5 NA
我有两个矩阵:
A <- structure(c(0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
0, 0, 1), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("a", "b"
)))
B <- structure(c(1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("c", "d"
)))
我资助 A 中包含第一个“1”的行数:
a_1 <- t(as.matrix(max.col(t(A) == 1, "first")))
它 return “4 , 3”。 现在我需要知道 B 中包含第一个“1”的行数,在我从 A 输出的行之后(分别为“4”和“2”)。我期望的结果是 B 的第一列为“5”,第二列为“NA”(或类似的东西)。 我能怎么做?感谢您的帮助!
也许这有帮助
apply((row(B) >c(a_1)[col(B)]) * B, 2, \(x) which(x==1)[1])
c d
5 NA
这里有一个方法:
sapply(seq_along(a_1), \(i) {
k =which(B[,i]==1);k[which(k>a_1[i])][1]
})
输出:
[1] 5 NA