2011-09-27 62 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循環做到這一點,你從來沒有這樣做的。

(這整個的答案是基於對你實際上試圖完成的任務,因爲這個問題,和你評論的胡亂猜測,都很難搞清楚)

相關問題