[英]A shorter alternative to nested for loops
我正在使用 2 个嵌套for
循环执行一些计算来计算pij
(见下文)。 但是,我想知道是否可以使用较短的 R 代码代替 2 个嵌套for
循环?
X <- data.frame(A = 1:6, B = c(1, 2, 4, 4, 5, 5))
X2 <- X * (X - 1)
sumcol <- colSums(X)
sumrow <- rowSums(X)
pij <- matrix(, nrow = nrow(X), ncol = ncol(X)) ## pij HERE
for (i in 1:length(sumrow)) { ## Nested for loops
for (j in 1:length(sumcol)) {
pij[i, j] <- X2[i, j]/(sumrow[i] * (sumrow[i] - 1))
}
}
我们可以通过执行以下计算直接从X
中得到所需的pij
矩阵。
(X * (X - 1))/(rowSums(X) * (rowSums(X) - 1))
# A B
#1 0.0000000 0.0000000
#2 0.1666667 0.1666667
#3 0.1428571 0.2857143
#4 0.2142857 0.2142857
#5 0.2222222 0.2222222
#6 0.2727273 0.1818182
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.