2014-01-16 53 views
0

我不知道我嘗試做什麼是可能的!我有一個值的矩陣(Var_sim),我將它轉換爲一個ff對象。該對象的名稱是使用「粘貼」創建的。現在,我想在功能ffload使用這個對象,這是我的代碼:在函數中使用帶有已創建名稱的變量

Variables[k] = TEMP 
Cell_number[i] = 4095 
selected_domains = 1 

assign(paste("Mat_",Variables[k],"_",Cell_number[i],"_",selected_domains[j],sep=""),as.ff(Var_sim)) 

在這裏,我有自己的變量Mat_TEMP_4085_1作爲FF對象。我在一個循環中使用它,所以我將有各種不同名稱的ff對象(不同的cell_number)。我需要在函數中使用Mat_TEMP_4085_1(和其他),但我不能只寫下名稱:

ffsave(as.name(paste("Mat_",Variables[k],"_",Cell_number[i],"_",selected_domains[j],sep="")), file="Test") 

我有以下錯誤:

Error in ffsave(as.name(paste("Mat_", Variables[k], "_", Cell_number[i], : 
objet ‘as.name(paste("Mat_", Variables[k], "_", Cell_number[i], "_",  selected_domains[j], sep = ""))’ not found 

它不承認的變量。我能怎麼做?

+0

這是什麼'ff'的東西?從包裝?另外,製作姓名和使用分配幾乎總是錯誤的,並且可能是問題的原因。製作一些東西,而不是試圖將索引放入事物的名稱中。 – Spacedman

+0

是的ff是一個包,我使用它,因爲我正在處理大量數據。該函數將寫入每個文件夾中的文件,然後我可以重新加載它們並使用一個矩陣。問題是當我加載一個ff對象時,變量名稱是保存在ffsave中的對象的名稱。如果我總是使用相同的名稱,並且想要加載多個ff對象,則該變量將被覆蓋,因爲它將是相同的名稱。 – Douie

+0

您可以使用'envir'參數將每個參數加載到不同的環境中,並從中列出一個列表。 – Spacedman

回答

0

看起來好像你正在使用as.name沒錯。如果您想從變量的字符串名稱中獲取變量值,請使用get;如果您希望從變量的字符串名稱中獲取變量值,只需將其刪除或將as.character包裝在其中即可。 @Spacedman是對的,如果可以的話,你應該更喜歡名單的列表。

tt = "rbind" 
print(do.call(tt,list(LETTERS))) # works 
print(do.call(as.name(tt),list(LETTERS))) # does not work 
print(do.call(as.character(as.name(tt)),list(LETTERS))) # works 
print(do.call(get("tt"),list(LETTERS))) # works 
+0

感謝您的回答。無論我嘗試什麼,我仍然有相同的錯誤(get,as.character(as.name())或juste paste())。當我打印代碼時,它給了我想要的名字,但是當我需要在函數中使用它時,它不會識別它 – Douie

+0

我看了看ffsave,看起來像需要指定一個名稱列表:'require(ff ); n < - 8e3; (paste(LETTERS [1:3],collapse =「」),ff(sample(n,n,TRUE),vmode =「integer」,length = n,filename =「〜/ test/ABC.ff」 )); ffsave(list = paste(LETTERS [1:3],collapse =「」),file =「〜/ test/another_ABC」)' –

+0

謝謝!我需要「名單」。這些名稱由用戶放入函數的參數設置。我可以從不同的參數組合中獲得將近50萬個名稱 - 我認爲使用名稱列表會更復雜 – Douie

相關問題