字符串的变量名,R

时间:2019-04-11 14:34:27

标签: r

我有一个关于将变量名称转换为字符串以用作x轴名称的问题。

我试图应用deparse(substitute(input)),但是不幸的是,当我在另一个函数中调用此函数时,它不能很好地工作。

plot_CI <- function(input){

  nm <- deparse(substitute(input))
  if (substring(nm,1,1) == 'u') {
    prior <- 'uniform'
  } else if ((substring(nm,1,1) == 'l')) {
    prior <- 'logit_Normal'
  } else {
    prior <- paste(strsplit(nm,"_")[[1]][1:2],collapse="_")
  }

  plot <- ggplot(temp_data, aes(x = x, y = mean)) +
    geom_point(size = 2) +
    geom_errorbar(aes(ymax = high, ymin = low)) +
    geom_hline(yintercept = true_value, col = 'blue') +
    labs(x=prior, y='value')
  return(plot)
}

sen_plot <- function(variable){
  # variable <- deparse(substitute(var))
  file_name <- paste0('C:/Users/Qiangsuper/Dropbox/Papers/1/plot/sensitivity_', variable, '.png')
  png(filename = file_name, width = 1000, height = 400)
  p1 <- plot_CI(eval(parse(text = paste0('uniform_', variable))))
  p2 <- plot_CI(eval(parse(text = paste0('logitN_', variable))))
  multiplot(p1,p2,cols=2)
  dev.off()
}

for (i in c("beta_1", "beta_2", "beta_3", "phi", "p", "delta")) {
  sen_plot(i)
}

我希望'uniform'作为X轴名称,但是,我只收到eval(parse(text = paste0('Uniform_',variable))))。 enter image description here 非常感谢您的帮助。

  • 有关问题的更新:

我认为我应该使问题更简洁。这是一个容易理解的场景。

uniform_beta_1是一个数据框或数据表,用于存储我的结果。我尝试开发一种自动绘图算法,该算法将自动识别我应用的先前分布,并使用该先前分布命名X轴。对于Uniform_beta_1,先验分布是统一的,那么X轴的名称将是统一的。这是我尝试做的事情:

input <- uniform_beta_1
nm <- deparse(substitute(input))

然后应用substring命令来判断先前的分配。但是,在这种情况下,nm将返回“输入”而不是“ uniform_beta_1”。我想知道是否有任何方法可以返回“ uniform_beta_1”。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的问题的最终解决方案是,我从一开始就创建一个列表,并将所有这些字符串存储到该列表中,以避免在函数中进行转换。