2014-12-03 125 views
0

我做了一個列表,將列表讀入for循環,使用它進行一些計算並將修改後的數據框導出到[1] "IAEA_C2_NoStdConditionResiduals1" [2] "IAEA_C2_EAstdResiduals2"等。當我在for循環後執行View(IAEA_C2_NoStdConditionResiduals1)時,我在控制檯中得到以下錯誤消息:Error in print(IAEA_C2_NoStdConditionResiduals1) : object 'IAEA_C2_NoStdConditionResiduals1' not found,但我知道它在那裏,因爲RStudio在其環境視圖中告訴我。所以問題是:如何訪問保存的數據(在此分配結構中)以供進一步使用?如何訪問保存在賦值構造中的數據?

ResidualList = list(IAEA_C2_NoStdCondition = IAEA_C2_NoStdCondition, 
       IAEA_C2_EAstd = IAEA_C2_EAstd, 
       IAEA_C2_STstd = IAEA_C2_STstd, 
       IAEA_C2_Bothstd = IAEA_C2_Bothstd, 
       TIRI_I_NoStdCondition = TIRI_I_NoStdCondition, 
       TIRI_I_EAstd = TIRI_I_EAstd, 
       TIRI_I_STstd = TIRI_I_STstd, 
       TIRI_I_Bothstd = TIRI_I_Bothstd 
       )   

C = 8 

for(j in 1:C) { 

#convert list Variable to string for later usage as Variable Name as unique identifier!!  

SubNameString = names(ResidualList)[j] 
SubNameString = paste0(SubNameString, "Residuals") 

#print(SubNameString) 
LoopVar = ResidualList[[j]] 



LoopVar[ ,"F_corrected_normed"] = round(LoopVar[ ,"F_corrected_normed"]/mean(LoopVar[ ,"F_corrected_normed"]), 
              digit = 5 
              ) 

LoopVar[ ,"F_corrected_normed_error"] = round(LoopVar[ ,"F_corrected_normed_error"]/mean(LoopVar[ ,"F_corrected_normed_error"]), 
                digit = 5 
               ) 
assign(paste(SubNameString, j), LoopVar) 

} 

View(IAEA_C2_NoStdConditionResiduals1) 

回答

1

不是真的有assign多與paste功能的行爲問題。這將建立一個變量名中有空格:

assign(paste(SubNameString, j), LoopVar) 

#simple example 
> assign(paste("v", 1), "test") 
> `v 1` 
[1] "test" 

,,,,所以你需要通過把周圍的名字反引號這樣的空間沒有被誤解爲語法分析分隔符來獲得它的價值。看到當你鍵入會發生什麼:

`IAEA_C2_NoStdCondition 1` 

...並從這裏向前,用paste0避免這個問題。

+0

'@ BondeDust'。非常感謝! – Johannes 2014-12-03 02:06:47

相關問題