gpt4 book ai didi

r - 在 for 循环中组合不同的矩阵

转载 作者:行者123 更新时间:2023-12-02 08:48:54 25 4
gpt4 key购买 nike

我想在循环中创建不同的矩阵,然后组合(cbind 或 rbind)它们。但是下面的代码不起作用。为什么不?以及如何解决?

dependent = matrix(c(30,184,6,106), 2, 2, byrow=T)
independent = c(160,166)
expected = numeric()
{for(i in 1:length(independent))
a = dependent*independent[i]/sum(independent)
expected = cbind(expected,a)}

这给出:

expected
[,1] [,2]
[1,] 15.276074 93.69325
[2,] 3.055215 53.97546

这是仅使用 for 循环的最后一次迭代的结果。所以结果就像只使用了 166,但没有使用 160。

最佳答案

一些评论:

  1. 您的 for 循环括号位置错误。你有:

    R> {for(i in 1:3) 
    + cat(i, "\n")
    + cat(i, "\n")
    + }
    1
    2
    3
    3

    相反,你应该:

    R> for(i in 1:3) {
    + cat(i, "\n")
    + cat(i, "\n")
    + }
    1
    1
    2
    2
    3
    3

    当您构造一个for 循环并省略括号时,仅使用for 语句之后的第一行。

  2. 您可以通过保存 sum(independent) 的结果使您的 for 循环更高效,因为它不会随着每次迭代而改变,即

      for(i in 1:length(independent)){
    a = dependent*independent[i]
    expected = cbind(expected,a)
    }
    expected = expected//sum(independent)
  3. 事实上你可以向量化整个计算

    y = sapply(independent, '*', dependent)
    matrix(y, ncol=4,nrow=2)/sum(independent)

关于r - 在 for 循环中组合不同的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com