循环遍历R中的字符串变量

aTr*_*ron 13 statistics r stata

在Stata中编程时,我经常发现自己在编程中使用了循环索引.例如,我将循环遍历变量nominalprice和realprice的列表:

local list = "nominalprice realprice"
foreach i of local list {
  summarize `i'
  twoway (scatter `i' time)
  graph export "C:\TimePlot-`i'.png"
}
Run Code Online (Sandbox Code Playgroud)

这将绘制名义价格和实际价格的时间序列,并导出一个名为TimePlot-nominalprice.png的图表和另一个名为TimePlot-realprice.png的图表.

在R中,我想出的做同样事情的方法是:

clist <- c("nominalprice", "realprice")
for (i in clist) {
  e <- paste("png(\"c:/TimePlot-",i,".png\")", sep="")
  eval(parse(text=e))
  plot(time, eval(parse(text=i)))
  dev.off() 
}
Run Code Online (Sandbox Code Playgroud)

这个R代码对我来说看起来不直观和混乱,我还没有找到一个很好的方法在R中做这种事情.也许我只是没有以正确的方式思考问题?你能建议一个更好的循环使用字符串的方法吗?

Jon*_*ang 18

正如其他人所暗示的那样,如果你有一个名为nominalprice和列的数据框,这会更容易realprice.如果你不这样做,你可以随时使用get.你根本不需要parse这里.

clist <- c("nominalprice", "realprice")
for (i in clist) {
   png(paste("c:/TimePlot-",i,".png"), sep="")
   plot(time, get(i))
   dev.off() 
}
Run Code Online (Sandbox Code Playgroud)