繁体   English   中英

嵌套 for 循环的更短替代方案

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM