r - 如何让函数在表达式()中正常执行?
问题描述
我正在尝试将一些标签部分斜体化,但仍有sum()
功能,但我不知道该怎么做:
library(ggplot2)
library(reshape2)
iris_mean <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=mean)
iris_sd <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=sd)
df_mean <- melt(iris_mean, id.vars=c("Species"), variable.name = "Samples", value.name="Values")
df_sd <- melt(iris_sd, id.vars=c("Species"), variable.name = "Samples", value.name="Values")
limits <- aes(ymax = df_mean[,"Values"] + df_sd[,"Values"], ymin=df_mean[,"Values"] - df_sd[,"Values"])
df_mean$Species <- factor(df_mean$Species, levels=unique(df_mean$Species), ordered=TRUE)
ggplot(df_mean, aes(Samples, Values, fill = Species)) +
geom_bar(position="dodge", stat="identity") + coord_flip() +
theme(axis.text.y=element_text(angle=0, hjust=1)) +
theme_minimal() +
theme(
legend.position = "bottom",
plot.margin = unit(c(1,1,.5,0),"cm"),
legend.key.size = unit(.5, "lines"),
axis.text.y = element_text(face = "italic")
) +
scale_x_discrete("",
labels= expression(
paste(italic("I. setosa"), " (n=", sum(iris == "setosa"), ")"),
paste(italic("I. versicolor"), " (n=", sum(iris == "versicolor"), ")"),
paste(italic("I. virginica"), " (n=", sum(iris == "virginica"), ")")))
当前情节:
想要的情节:
解决方案
只需查看 scale_x_discrete,您就可以做到
scale_x_discrete("",
labels= c(
bquote(italic("I. setosa")*" (n="*.(sum(iris == "setosa")) * ")"),
bquote(italic("I. versicolor")*" (n="*.(sum(iris == "versicolor")) * ")"),
bquote(italic("I. virginica")*" (n="*.(sum(iris == "virginica")) * ")")))
在这里,我们使用bquote()
将值“插入”到表达式中。我们使用调用中的.()
函数来执行此操作,该函数bquote()
评估当前环境中的表达式并将值插入到表达式中。
您可以使用以下命令自动创建这些
x <- c("setosa", "versicolor", "virginica")
xlabels <- lapply(x, function(spec) {
bquote(italic(.(paste("I.", spec)))*" (n="*.(sum(iris == spec)) * ")")
})
然后使用
+ scale_x_discrete("", labels= xlabels)
推荐阅读
- python - Pandas - 具有重复值的列的外部连接
- python - 按比例将 NaN 替换为现有值
- java - 单击时可以禁用 GoogleMap 以移动到标记吗?
- c# - 从派生类引用c#访问基类的虚方法
- c++ - 是否有任何 O(n^2) 算法来生成数组的所有子序列?
- raspberry-pi3 - WPA 请求者无法在 Raspberry Pi 3B+ 上使用 Raspbian
- microsoft-graph-api - 通过 Microsoft Graph API 访问其他租户数据
- mysql - 我可以查询没有主键和外键的 2 个表吗?
- android - 你如何在drawable文件夹中使用svg?
- scala - SCALA:BigInt 的平方根函数