有一个矩阵:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 11 14 17 20 23 26
[2,] 12 15 18 21 24 27
[3,] 13 16 19 22 25 28
我只想获取每行数字总和在 2 之间的行 值。
每行的数字总和:
[1] 30
[2] 38
[3] 42
因此,如果我只想获取数字总和在 31
和 40
之间的行,那么
仅必须返回值为 38
的行 2
。
最佳答案
我们能做到
i1 <- apply(m1, 1, function(x) {
v1 <- sum(unlist(lapply(strsplit(as.character(x), ""), as.numeric)))
v1 > 31 & v1 < 40})
m1[i1, , drop = FALSE]
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 12 15 18 21 24 27
<小时/>
或者
i1 <- sapply(strsplit(do.call(paste0, as.data.frame(m1)), ""),
function(x) sum(as.integer(x)))
m1[i1, , drop = FALSE]
<小时/>
或者我们可以做
f1 <- Vectorize(function(x) sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10))
i1 <- rowSums(t(apply(m1, 1, f1))) %in% 31:40
m1[i1, , drop = FALSE]
数据
m1 <- matrix(11:28, nrow = 3)
关于r - 数字矩阵中每行的数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44327824/