【问题标题】:Loop two variables one is conditional on another one循环两个变量,一个以另一个为条件
【发布时间】:2011-09-27 01:40:26
【问题描述】:

我想创建一个包含两个变量i,j 的循环。对于每个 i 等于 1:24,j 可以是 1:24 但我不知道做这个循环;

i=1
while(i<=24)
{
   j=seq(1,24,by=1)

   for (j in j)
   {
      cor[i,j]
   }
}
i=i+1

这是对的吗?我的输出是cor[i,j]

【问题讨论】:

  • 您使用的语法不太正确。你能解释一下你想要做什么吗?您是否尝试计算两个变量之间的correlation?您的数据是什么样的?
  • cor 是矩阵输出。我想要做的是对于每个 i,比如 i=1,j 取 1:24 的值,这样矩阵 cor 可以像 cor[1,1],cor[1,2],cor[1, 3].......
  • 仍然不清楚您是否要计算变量组合的一些统计数据,或者您是否只想得到一个包含 1:24 的所有组合的 576 行 x 2 列矩阵?如果是后者,cor &lt;- cbind(rep(1:24, each = 24), 1:24) 会做你想做的事。如果这不是您想要的 - 请尝试编辑您的问题以明确您正在尝试做什么。 cor 应该是 cor() 函数的名称吗?还是您想命名一个对象的任意名称?注意[是用来索引的,不是调用函数cor()

标签: r loops conditional


【解决方案1】:

为了实现你的最终目标,试试...

cor(myMatrix)

结果是一个矩阵,其中包含 myMatrix 中所有列的所有相关性。

如果您想尝试按照原来的方式去做,最好使用combn 生成一个包含所有可能的项目组合的矩阵。试试 combn(1:4,2) 看看它是什么样的一个小例子。对于具有 24 列的示例,使用 for 循环遍历所有组合的最佳方法是...

myMatrix <- matrix(rnorm(240), ncol = 24)
myIndex <- combn(1:24,2)
for(i in ncol(myIndex)){
    temp <- cor(myMatrix[,myIndex[1,i]],myMatrix[,myIndex[2,i]])
    print(c(myIndex[,i],temp))
}

因此,可以使用 R 中的 for 循环来实现,而您永远不会那样做。

(整个答案基于对您实际尝试完成的任务的疯狂猜测,因为问题和您的 cmets 很难弄清楚)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多