【发布时间】:2017-09-27 15:10:46
【问题描述】:
我一直希望我的 R 代码尽可能灵活;目前,我有三个(可能更多)曲线要基于参数 delta 进行比较,但我不想在任何地方硬编码 delta 的值(如果可以避免的话,甚至是多少个值)。
我正在尝试制作一个涉及希腊语和变量替换 delta 值的图例,因此每个图例条目的形式类似于“delta = 0.01”,其中 delta 是希腊语,0.01 由变量确定。 paste、substitute、bquote 和 expression 的许多不同组合已被尝试过,但总是在完成的图例中留下一些逐字代码,或者未能将“delta”转换为符号形式。
delta <- c(0.01,0.05,0.1)
plot(type="n", x=1:5, y=1:5) #the curves themselves are irrelevant
legend_text <- vector(length=length(delta)) #I don't think lists work either
for(i in 1:length(delta)){
legend_text[i] <- substitute(paste(delta,"=",D),list(D=delta[i]) )
}
legend(x="topleft", fill=rainbow(length(delta)), legend=legend_text)
由于legend=substitute(paste(delta,"=",D),list(D=delta[1]) 适用于单个条目,我还尝试了一个“半硬编码”版本,修复了增量的长度:
legend(x="topleft", fill=rainbow(length(delta)),
legend=c(substitute(paste(delta,"=",A), list(A=delta[1])),
substitute(paste(delta,"=",B), list(B=delta[2])),
substitute(paste(delta,"=",C), list(C=delta[3])) )
)
但这和以前有同样的问题。
有没有办法可以做到这一点,或者我需要在每次更新 delta 时手动更改代码?
【问题讨论】:
标签: r variables legend substitution