2013-04-15 47 views
1

在R中,我有一個矩陣:matClust4,該矩陣在執行kmeans算法後保存了集羣4中的所有向量。R,向矩陣的每一行添加一個屬性

matClust4具有尺寸27×31,並且具有rownames屬性爲每個向量集。 我想要做的是給每個行向量的另一個屬性matClust4

我寧願使用apply函數。我想嘗試這樣的事:

apply(matClust4, 1, function(v) SOME_ATTRIBUTE(v) = idClust4) 

#where idClust4 is some previous calculated result 
  1. 如何創建/使用matClust4屬性做到這一點?
+0

我不認爲你可以這樣做。行不是單獨的對象,所以它們不能具有單獨的屬性。如果你可以將屬性放入一個向量中,你可以使用attr(matClust4,「WHATEVER」) - vector_of_whatever(同樣,rownames屬性是一個與matClust4關聯的向量,而不是一組單獨的屬性與行有關) –

+0

也許如果你解釋了你想要一個額外屬性的原因,可以提供替代方法來實現你的目標。 –

回答

1

你woud不需要使用apply爲此目的,如果已經計算待分配的值(和有相同數量matClust4不得不行的元素,您應該只分配的R屬性有:

attr(matClust4, 'SOME_ATTRIBUTE') = idClust4 

這是弗蘭克·哈勒爾如何爲他從SAS進口數據集創造價值標籤。您千萬要小心,重新排序或數據幀的改變可能破壞與載體的關係,因爲會有一致的執行通過[<-sortorder

+0

這給了我matClust4的一個屬性,但像'rownames'我想每行的屬性。 – CodeKingPlusPlus

+2

'rownames'屬性只是一個具有與數據框(或矩陣)有行數一樣多的元素的向量。你會用rownames(matClust4)[n]'得到第n個rowname。如果你真的想要的是一個新的專欄,你需要停止將這個新事物稱爲'屬性'。如果你只是想要一個新的列,那麼這樣做:'matClust4 $ newcol < - idClust4' –

+0

我剛剛做過attr(matClust4,「clustID」)< - ids',其中'ids'是一個向量,其行數與'matClust4'。現在,R不會讓我通過'matClust4 $ clustID'訪問'clustID'。我該如何解決?正如我所說的, – CodeKingPlusPlus

相關問題