2012-05-27 29 views
3

我有一個函數計算一些事情,然後將其分配給矩陣。該矩陣從paste語句(基於其他一些當前值)接收其名稱。然後,我想將dimname分配給矩陣,但不知道如何讓粘貼的名稱被理解。在函數中使用「粘貼」名稱

這裏是正在發生的事情:

function <- someComputations(labs) { 
    ### bunch of computations, leading to X, Y, and Z: 
    matName <- paste("rhoMat_", X, sep = "") # this yields rhoMat_15 if X equals 15 
    assign(matName, Y %*% Z) 
    assign(dimnames(matName), labs) # labs is a list of row labels and column labels 
    return(matName) 
} 

這種運作良好,包括第一個賦值語句,然後將其分解。 我嘗試了各種方法,如eval(解析(文本= matNum)),as.name(matNum),替代(matNum),但無濟於事。 因爲我不知道矩陣的實際名稱(因爲沒有給出matNum),所以我無法將名稱硬編碼到函數中 - 所以我被卡住了它的字符名稱matName。我如何讓R理解我想設置矩陣rhoMat_15的dimname,而不是matName?

謝謝,彼得

回答

3
dimnames(get(matName)) <- labs 
+0

謝謝,這是有道理的。 奇怪的是,我得到錯誤信息 dimnames(get(matName))中的錯誤< - 實驗室:找不到函數「get < - 」 這很奇怪,因爲get是基地。另外,當我輸入?get它打開獲取幫助,所以得到不是未知的。 不知何故,在功能內部找不到。任何想法爲什麼它不起作用? –

+0

你有你的括號搞砸了。你想要做'get(matName)< - labs'嗎?那會試圖調用'get <-',它不存在。 –

+0

不,我想設置由matName < - paste(「rhoMat_」,X,sep =「」)創建的對象的dimname,其中X可以是任意數字。 –