2013-05-15 60 views
0

我想修改一個「變量」變量;也就是說,我只想修改其名稱與數據框/矩陣的單元格中的文本相匹配的變量。如何修改數據框單元格中指定的變量?

例如,如果matrix1[1,1] == "Rupert",我想對變量Rupert(例如,Rupert <- Rupert + 1)執行操作。但是,如果matrix1[1,1] == "Paddington",我想要執行對帕丁頓變量的操作。

我已經發現了assign()功能,讓我創建新的變量,其名稱是在基體中的文本,但我一直無法弄清楚如何修改變量以類似的方式。

感謝您的關注,

阿利斯泰爾

+0

'assign'也會覆蓋變量。 'get'會得到它。 :) – Frank

回答

1

使用你的例子:

var <- matrix1[1,1] 
assign(var,get(var)+1) 

get功能的help(assign)的 「參見」 一節中找到。

+0

非常感謝您的幫助弗蘭克。對於任何人在這個問題上磕磕絆絆:請注意,你**不能**使用'assign(matrix1 [1,1],3)'分配變量'。正確的代碼是'assign(paste(matrix1 [1,1],「」,sep =「」),3)' - 你必須在那裏使用「粘貼」命令(不知道爲什麼)。同樣的,如果你希望以我嘗試的方式申請弗蘭克答案,正確的代碼是'assign(paste(matrix1 [1,1],「」,sep =「」),get(paste(matrix1 [1 ,1],「」,sep =「」))+ 3)'。 – DifferentFrogs

+0

呵呵,我不知道。當你依靠'assign'和'get'時,事情很快就會變得棘手。我認爲大多數R用戶會建議你儘可能避免它們。我不是一個專家,但我認爲其原因是:除了需要更復雜的代碼之外,這種方法的計算成本也很高,並且會在您的命名空間中留下大量對象,您可能會在以前定義過的情況下意外忘記了這些對象。 – Frank

相關問題