2013-08-16 47 views
0

我有方差 - 協方差矩陣,其看起來如下:切換列?

  hyperbPi  lZeta  lDelta 
hyperbPi 0.005113433 0.009151182 0.008327188 
lZeta 0.009151182 1.661749998 1.590549700 
lDelta 0.008327188 1.590549700 1.526103143 

如何切換它以這樣的方式,我有lZeta在第二和1delta的第三第一列和hyperbPi?我的意思是以這樣一種方式切換,即邏輯不會丟失。我不能只改變列本身,因爲它是一個方差 - 協方差矩陣?

+1

重新安排你打電話'cov',或者你使用任何功能列? 'cov(mydf [c(2,1,3)])'。一些示例數據會很有幫助。 – A5C1D2H2I1M1N2O1R2T1

+1

或者簡單地這樣做:'yourMx < - yourMx [c(2,1,3),c(2,1,3)]'重要的是在第一個和第二個參數中使用完全相同的索引矩陣子集... – digEmAll

回答

3

cor,covvar這樣的函數將按照與源data.frame中的列相同的順序創建矩陣。您可以使用基本列索引輕鬆指定另一個訂單。

考慮這麼多廢話例如:

set.seed(1) 
x <- data.frame(matrix(sample(20, 18, replace = TRUE), ncol = 3)) 
names(x) <- c("two", "one", "three") 
cov(x) 
#    two one  three 
# two 36.666667 -25.8 4.866667 
# one -25.800000 45.9 -5.500000 
# three 4.866667 -5.5 18.566667 
cov(x[c(2, 1, 3)]) 
#   one  two  three 
# one 45.9 -25.800000 -5.500000 
# two -25.8 36.666667 4.866667 
# three -5.5 4.866667 18.566667