【发布时间】:2020-10-15 11:35:13
【问题描述】:
我在 R 中执行 Excel 的 SUMIF 函数时遇到问题。有 2 个矩阵,m 和 n。如果列 j+1 中的行 i+1 不为空,我希望矩阵 n 将矩阵 m 的每一列 j 的总和限制到第 i 行(不确定我是否说清楚了,下面是我的解释更清楚地了解我想要做什么)。
以下是我的代码:
m <- matrix(c(1,2,3,4,5,'',7,'',''), nrow = 3)
n <- matrix('', nrow = 2, ncol = 3)
for (j in 1:2) {
n[2,j] <- sum(as.numeric(m[,j])[!is.na(m[,j+1])]
}
n[2,3] <- ''
下面是矩阵m:
> m <- matrix(c(1,2,3,4,5,'',7,'',''), nrow = 3)
> m
[,1] [,2] [,3]
[1,] "1" "4" "7"
[2,] "2" "5" ""
[3,] "3" "" ""
以上代码生成矩阵 n 的结果:
> n <- matrix('', nrow = 2, ncol = 3)
> n
[,1] [,2] [,3]
[1,] "" "" ""
[2,] "" "" ""
但我希望代码产生这样的结果:
> n <- matrix('', nrow = 2, ncol = 3)
> n
[,1] [,2] [,3]
[1,] "" "" ""
[2,] "3" "4" ""
请帮忙!谢谢!
【问题讨论】:
-
你为什么要强制
character然后sum(as.numeric(.))?将NA用于矩阵中的空值会好得多。 -
当你只在第二行有值时,为什么你需要
n中的第一行为空(“”)? -
感谢您的回复@r2evans!但是将 '' 更改为 NA 并不能解决问题:(
-
@RonakShah 这是从我的 R 闪亮应用程序中提取的一个简单而简短的内容,它比这更复杂。我想将 sumif 值放入第二个矩阵的第二行。