У меня есть вопрос о преобразовании имени переменной в строки для работы в качестве имени оси X.
Я пытался применить deparse (замещающий (входной)), но, к сожалению, он не работает, когда я вызывал эту функцию в другой функции.
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)
}
Я ожидаю, что в качестве имени оси X указано'iform ', однако я получил только eval (parse (text = paste0 (' Uniform_ ', variable))).
Большое спасибо за вашу помощь.
Думаю, мне следует сделать этот вопрос более лаконичным. Вот легко понятный сценарий.
iform_beta_1 - это фрейм данных или таблица данных, в которой хранятся мои результаты. Я пытаюсь разработать автоматический алгоритм построения графика, который будет автоматически определять, какое предыдущее распределение я применил, и назову ось X этим предварительным распределением. Дляiform_beta_1, предыдущее распределение является равномерным, тогда имя оси X будет равномерным. Вот что я пытаюсь сделать:
input <- uniform_beta_1
nm <- deparse(substitute(input))
Затем примените команду подстроки для оценки предыдущего распределения. Однако в этом случае nm вернет «input», а не «iform_beta_1 ». Мне интересно, могу ли я как-нибудь вернуть'iform_beta_1 '?
Большое спасибо за вашу помощь.