4
我在xts R對象中有三個向量。給他們打電話V1,V2,V3。合併後,它們從左到右的順序是V2,V3,V1。我如何重新排列它們,使它們從V1,V2,V3讀取(從左到右)?如何在R中重新排列向量順序?
我在xts R對象中有三個向量。給他們打電話V1,V2,V3。合併後,它們從左到右的順序是V2,V3,V1。我如何重新排列它們,使它們從V1,V2,V3讀取(從左到右)?如何在R中重新排列向量順序?
您可以直接引用的列並重新分配他們:
x <- x[,c(2,3,1)]
這裏有一個工作示例:
> data(sample_matrix)
> x <- head(as.xts(sample_matrix, descr='my new xts object'))[,c(1,2,3)]
> x
Open High Low
2007-01-02 50.03978 50.11778 49.95041
2007-01-03 50.23050 50.42188 50.23050
2007-01-04 50.42096 50.42096 50.26414
2007-01-05 50.37347 50.37347 50.22103
2007-01-06 50.24433 50.24433 50.11121
2007-01-07 50.13211 50.21561 49.99185
> x <- x[,c(2,3,1)]
> x
High Low Open
2007-01-02 50.11778 49.95041 50.03978
2007-01-03 50.42188 50.23050 50.23050
2007-01-04 50.42096 50.26414 50.42096
2007-01-05 50.37347 50.22103 50.37347
2007-01-06 50.24433 50.11121 50.24433
2007-01-07 50.21561 49.99185 50.13211
值得一提的是,當你是能夠通過引用的列名稱以生成新的對象和列,ala
xts.object$V1plusV2 <- xts.object[, "V1"] + xts.object[, V2"] ,
您不能通過名稱重新排列列。以下是不允許的
xts.reordered <- xts.object[, c("V3, V2, V1")] .
相反,正如Shane指出的那樣,您需要通過編號引用列。
非常感謝。我將在未來記住這個記號。我做了一個不太優雅的解決方法。我的最終數據框是三個合併向量的結果,所以我只是重新安排了合併它們的順序。 (V2,V1,V2) 原因:合併(V2,V1,V2) 解決方法:合併(V1,V2,V3) – Milktrader 2010-04-08 02:59:08