2012-08-30 152 views
0

我有一個矩陣,並想重新排序行,例如第5行可以切換到第2行和第2行說對第7行。我有一個名單與所有rownames分隔\n,我想我可以以某種方式將它讀入R(它的一個txt文件),然後只是使用矩陣的名稱(在我的情況'K'和做一些像k[txt file,]-> k_new但這不起作用,因爲標識符不是第一個列,但被定義爲rownames如何重新排列矩陣行

+0

你說標題中的列,但文本中的行。這是什麼? –

+2

發佈dput(k)的輸出應該有助於澄清你的問題中的一些突出的含糊之處。 –

回答

1
k[ c(1,5,3,4,7,6,2), ] #But probably not what you meant.... 

或許(如果你的「K」對象rownames比默認的字符數字序列以外的東西)。

k[ char_vec , ] # where char_vec will get matched to the row names. 

(dat <- structure(list(person = c(1, 1, 1, 1, 2, 2, 2, 2), time = c(1, 
2, 3, 4, 1, 2, 3, 4), income = c(100, 120, 150, 200, 90, 100, 
120, 150), disruption = c(0, 0, 0, 1, 0, 1, 1, 0)), .Names = c("person", 
"time", "income", "disruption"), row.names = c("h", "g", "f", 
"e", "d", "c", "b", "a"), class = "data.frame")) 

dat[ c('h', 'f', 'd', 'b') , ] 
#------------- 
    person time income disruption 
h  1 1 100   0 
f  1 3 150   0 
d  2 1  90   0 
b  2 3 120   1 
+0

hallo - 我指的是行 - 所以如果我有一個正確的序列rownames名單,我可以只使用 k [txt文件,]? –

+0

我演示瞭如何重新排列行。 「[」引用rownames的「i」位置中的字符向量。 (我會糾正我的第二個誤導選項,因爲「txt」和「file」之間有一個空格,所以顯然不能使用'k [txt file,]',但是如果你的對象被命名爲「txtfile」 k [txtfile,]' –