2013-04-15 30 views
1

我對R非常陌生,在引用對象的數據成員和屬性時不確定正確的語言。我在Java中有一個面向對象的編程語言背景,所以我可能指的是Java中的數據成員/屬性。無論如何,假設我具有矩陣matClust1和我也做了以下內容:R數據成員和屬性

ids = vector() 
for(i in 1:size)    #size is the number of rows in matClust1 
{ 
    ids = c(ids, "exp") 
} 

attr(matClust1, "clustID") <- ids 

我認爲上述的作爲matClust1設置一個屬性/數據成員的每一行向量的至"exp"。這是因爲ids被創建爲具有與matClust1中的行一樣多的條目。所以,我希望能夠通過如下代碼訪問此屬性/數據成員:

matClust1.clustID[2]   #get the clustID of row vector in matClust1 

顯然,.運營商不這樣做也不對$操作。

  1. 如何在R中實現此功能?

編輯:我已經屬性爲rownames設置和我所真正需要的是另一個變量一樣rownames工作。

+0

除了特定的解決方案,這可能涉及使用'rownames()',你應該_definitely_閱讀[R地獄](http://www.burns-stat.com/pages/Tutor/ R_inferno.pdf),特別是Circle 2 + 3,如果你來自Java背景。它會爲你節省很多痛苦。 – joran

+1

只是一個快速提示 - '.'不是'R'中的操作符。這只是另一個角色。當你看到'.'想'_'(下劃線) –

+0

@RicardoSaporta:這只是部分正確的。事實僅限於數據對象命名。使用S3調度系統的功能命名依賴於「。」。具有特殊意義。但是對於OP來說,這是一種功能調度的方法,它不會很好地轉化爲Java經過訓練的思維過程。 –

回答

2

您可能需要data.framedata.table

E.g.

df = data.frame(matClust1) 

# create a new column and assign whatever to it: 
df$clustID = "exp" 

# use it however you like 
df$someOtherColumn = paste(1:dim(df)[1], df$clustID)