我正在尝试创建包含斜体的标签列表。我可以用这样的“表达式”来做到这一点,当我将它们放在绘图上时(通过添加图例作为示例,但我将以不同的方式使用它们),一切都很好。
sp.names=c(expression(paste("species ",italic("one")," sp.")),
expression(paste("species ",italic("two")," sp.")))
plot(1:10)
legend("topleft",legend=sp.names)
但是我不想直接在代码中指定标签中的单词,而是想从数据框中的单元格调用它们(因为它们有很多,并且它们根据我的基础数据而变化)。但是当我尝试指定我想要的数据框单元格时,它无法正确打印标签(见下文)。也许我有一种不同的方式来调用我希望“表达式”函数能够识别的单元格?
df=data.frame(V1=c("species","species","species"),V2=c("one","two","three"))
sp.names=c(expression(paste(df$V1[1],italic(df$V2[1])," sp.")),
expression(paste(df$V1[2],italic(df$V2[2])," sp.")))
plot(1:10)
legend("topleft",legend=sp.names)
最佳答案
使用substitute
,它替换表达式中的变量。
sp.names=c(substitute(V1 ~ italic(V2) ~ "sp.", df[1,]),
substitute(V1 ~ italic(V2) ~ "sp.", df[2,]))
我还删除了不需要的 paste
(它在plotmath 中具有不同的含义),并将其替换为 ~
以提高可读性。
关于r - 使用 "expression"使用数据帧中的值创建带有斜体的标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72456717/