【发布时间】:2016-11-02 15:37:37
【问题描述】:
我正在寻找一个简短的解决方案来在 for 循环中创建和使用不同的表,其中循环变量是名称的一部分。
我找到了以下解决方案:
如果我想在循环中创建表格,我可以将分配与粘贴一起使用。例如:
for (f in files){
assign(paste0("A_",f), readWorksheetFromFile(paste0(f,".xlsx")))}
如果我想使用这些表,我可以通过以下方式使用 eval、parse 和 paste0:
for(f in files){
x <- eval(parse(text=paste0("A_",f)))}
问题是我必须经常使用这些结构并且代码变得很长。有没有人在 R 中有更短的解决方案来做到这一点?
例如在 SAS 中,我可以使用类似的东西(我记得)
x = A_&f;
而不是
x <- eval(parse(text=paste0("A_",f)))
编辑
根据以下答案,我找到了这个解决方案:
在循环创建对象的过程中,我可以使用函数
`%c%` = function(a, b) paste0(a, b)
对两个或多个字符串按以下方式:
"A_" %c% f
"A_" %c% f %c% r
如果我想在循环中使用这个对象,我可以使用函数:
`%u%` = function(a, b) eval(parse(text=paste0(a,b)))
对两个或多个字符串按以下方式:
"A_" %u% f
"A_" %c% f %u% r
请注意,我仅在最后一步中使用了 %u%。
【问题讨论】:
标签: r for-loop create-table variable-names