我正在尝试为R中的直方图绘制标题。我想要的标题来自两个来源,首先是一个矢量(death.cause)指定,呃,死因,第二个来自一个data.frame,我使用list,deathratecols进行索引,以便到达现场。
> death.cause
> [[1]] [1] "Heart Attack"
>
> [[2]] [1] "Heart Failure"
>
> [[3]] [1] "Pneumonia"
> deathratecols
> [1] 11 17 23
我想组装标题,如:Heart Attack(x-bar = 7.63763),其中x-bar是数据列的平均值。我可以将这两部分分开工作,如下所示。
> main=substitute(x, list(x=death.cause[[i]]) )) # gives title "Heart Attack"
> main=substitute(bar(X)==k, list(k=mean(outcome[, deathratecols[i] ], na.rm=TRUE ) )) # gives title x-bar=7.63763
但是我使用paste()将两者放在一起的努力都失败了。
?有人指出我的方式错误
答案 0 :(得分:2)
使用sprintf
语句提前格式化标题,并将其传递给main
。琐碎的例子:
a <- "foo"
b <- "bar"
title <- sprintf("This combines %s and %s", a, b)
hist(rnorm(10), main = title)
也许这样的事情(但可能不起作用,因为你没有提供一个例子来使用):
title <- sprintf("%s, (x-bar = %s)", death.cause[[i]], mean(outcome[, deathratecols[i]])
答案 1 :(得分:0)
您可以将substitute()和paste()组合在一起,如下所示:
hist(outcome[, deathratecols[i]],
main=substitute(paste(death.cause[[i]], "(", bar(X), "=", k, ")"), list(k=mean(outcome[, deathratecols[i]], na.rm=TRUE))))
它对我有用。