R:为情节标题,轴标签或图例创建拉丁语/希腊语表达的向量

use*_*001 8 plot r legend special-characters tex

我想合并拉丁文和希腊文的矢量来生成情节标题,轴标签,图例条目等.我在下面提供了一个简单的例子.我无法弄清楚如何以原生形式呈现希腊字母.我已经尝试的各种组合expression,parse以及applypaste命令,但我还没有能够进行向量化的是容易产生用于单个表达的情况下混合的拉丁/希腊文(例如,代码expression("A ("*alpha*")")适于在一个单一的表达的情况下) .

data<-matrix(seq(20),nrow=5,ncol=4,byrow=TRUE)
colnames(data)<-c("A","B","C","D")
greek<-c(" (alpha)"," (beta)"," (gamma)"," (delta)")
matplot(data)
legend(1,max(data),fill=c("black","red","green","blue"),apply(matrix(paste(colnames(data),greek,sep=""),nrow=4,ncol=1),1,expression))
Run Code Online (Sandbox Code Playgroud)

你能否在apply()声明中帮我解释一下这个legend()陈述?它需要一些修改才能产生所需的输出(即A(α),B(β),C(γ),D(δ)).提前致谢.

Jos*_*ien 8

这是一个可以避免的替代方案parse(),并且可以使用您对@ mnel的第一个评论中提到的示例:

greek <- c("alpha", "beta", "gamma", "delta")
cnames <- paste(LETTERS[1:4], letters[1:4])

legend_expressions <- 
sapply(1:4, function(i) {
    as.expression(substitute(A (B), 
                  list(A = as.name(cnames[i]), B = as.name(greek[i]))))
})

matplot(data)
legend(1,max(data),fill=c("black","red","green","blue"),legend_expressions)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述