R语言实现矩阵每行固定值计数、行对列值对统计及公式计算
R语言实现矩阵统计计算的循环方案
1. 准备基础数据与参数
首先定义输入矩阵和基础维度参数:
# 示例输入矩阵 A <- matrix(c(0,1,2,1,1,0,2,0,1), 3, 3) n <- ncol(A) # 矩阵列数 N <- nrow(A) # 矩阵行数
2. 计算每行统计值与第一部分求和项
遍历每行统计1的出现次数,再计算第一部分的累加和:
ro <- numeric(N) r1 <- numeric(N) # 逐行统计ro和r1 for (i in 1:N) { ro[i] <- sum(A[i,] == 1) r1[i] <- n - ro[i] } # 计算第一部分求和结果 part1 <- sum(ro^4 - ro^3 - ro * r1)
3. 计算行对统计值与第二部分求和项
遍历所有a≠b的行对,统计对应列的值对数量,累加计算第二部分求和结果:
part2 <- 0 # 遍历所有无序行对,若需求为有序a≠b(即(a,b)和(b,a)都计入),可删除a < b的条件或最后将part2乘2 for (a in 1:(N-1)) { for (b in (a+1):N) { row_a <- A[a,] row_b <- A[b,] # 统计各类值对的出现次数 roo <- sum((row_a == 0 & row_b == 0) | (row_a == 2 & row_b == 2)) ro2 <- sum((row_a == 0 & row_b == 2) | (row_a == 2 & row_b == 0)) # 计算当前行对的贡献并累加 current_term <- roo * ro2 * (ro2*(72*ro2 - 99) - roo*(81*ro2 - 45) + 68) part2 <- part2 + current_term } }
4. 计算最终结果B(k)
B_k <- part1 - part2
内容的提问来源于stack exchange,提问作者Umer Daraz
相关产品推荐
相关产品推荐

