2014-12-03 126 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

相关问题