2011-09-27 98 views
-1

我想做一个循环,其中包含两个变量i,j。对于每个我等于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]

+0

你正在使用的语法不完全正确。你能解释一下你想做什么吗?你是否想要计算两个变量之间的“相关”?你的数据是什么样的? – Chase

+0

cor是矩阵输出。我想要做的是对于每个i,像i = 1,j取值从1:24开始,这样矩阵cor可以像cor [1,1],cor [1,2],cor [1, 3] .............. – Eva

+0

仍然不清楚是否要为变量组合计算一些统计量,或者如果您只想结束包含所有变量的576行x 2列矩阵1:24的组合?如果后者,'cor < - cbind(rep(1:24,each = 24),1:24)'会做你想要的。如果这不是您想要的 - 请尝试编辑您的问题以清楚说明您要做什么。 “cor”应该是'cor()'函数的名字吗?或者是你想命名一个对象的一些任意名字?请注意,'['用于索引,而不是调用函数'cor()'。 – Chase

回答

2

为了实现自己的最终目标尝试...

cor(myMatrix) 

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

如果您想尝试按照您的方式进行操作,最好使用combn生成所有可能的项目组合的矩阵。尝试combn(1:4,2),看看它是什么样子的一个小例子。对于您的示例使用for循环是通过所有组合循环的最好办法24列...

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 A for循环做到这一点,你从来没有这样做的。

(这整个的答案是基于对你实际上试图完成的任务,因为这个问题,和你评论的胡乱猜测,都很难搞清楚)

相关问题