在 RStudio 中,我有 marray_1。我想操作数组来计算列 j 的总和除以特定行 i 的总和,并从选定的列 j 开始。
例如,对于以下数组,我想要:
marray_1 <- matrix(c(17, 8, 1, 27, 0, 16, 11, 32, 0, 0, 13, 66), nrow = 3, ncol = 4)
(17)/(17+8+1+27)
(8+16)/((16+11+32)+(8+1+27))
(1+11+13)/((1+27)+(11+32)+(13+66)
我将向数组添加额外的行和列,因此我希望编写代码能够合并额外的行和列。
我目前有以下代码:
rows <- dim(marray_1)[1]
columns <- dim(marray_1)[2]
# Loops to calculate
for (j in 1:n.occasions){
for(i in 1:nrow(marray_1)){
array[i, j] <- colSums(marray_1)[j]/(sum(marray_1[i,j:n.occasions]))
}
}
# Print the resulting array
print(array)
我知道分子是正确的,但我正在努力计算分母。任何帮助将不胜感激!
假设您确实想在对
byrow=TRUE
的通话中使用 matrix
,
marray_1 <- matrix(c(17, 8, 1, 27, 0, 16, 11, 32, 0, 0, 13, 66), nrow = 3, ncol = 4, byrow = TRUE)
marray_1
# [,1] [,2] [,3] [,4]
# [1,] 17 8 1 27
# [2,] 0 16 11 32
# [3,] 0 0 13 66
我想你正在寻找的是
sapply(1:(ncol(marray_1)-1),
function(cn) sum(marray_1[1:cn,cn]) / sum(marray_1[1:cn,cn:ncol(marray_1)]))
# [1] 0.3207547 0.2526316 0.1666667
与你的价值观相比:
c(
(17)/(17+8+1+27),
(8+16)/((16+11+32)+(8+1+27)),
(1+11+13)/((1+27)+(11+32)+(13+66))
)
# [1] 0.3207547 0.2526316 0.1666667