2

我正在尝试在表格中使用以下列名打印撇号tableGrob

"Kendall's~tau"

最终结果是整个标签是斜体的,而没有~tau解释:

名称

我如何正确指定这个?

我不认为它有帮助,但这是我指定给 tableGrob 的主题:

table_theme <-  ttheme_default(
   core = list(fg_params=list(fontsize = 6)),
   colhead = list(fg_params=list(fontsize = 6, parse=TRUE)),
   rowhead = list(fg_params=list(fontsize = 6, parse=TRUE)),
   padding = unit(c(2, 3), "mm"))

列名通过 plotmath in 解释grDevices——在 R 中生成的图形中指定数学注释的标准方法。

同样,它与如何指定表达式本身无关,但这里是表构造函数:

tableGrob(stats_df,
     theme = table_theme, 
     rows = c("Kendall's~tau"))

这是一个可重现的示例:

library(gridExtra)
library(grid)
data(iris)
table_theme <-  ttheme_default(rowhead = list(fg_params=list(parse=TRUE)))
grid.table(head(iris),
       rows = c(letters[c(1:4)], "plotmath~works~omega", "Kendall's~tau"),
       theme = table_theme)

例子

4

4 回答 4

1

这有效:

library(gridExtra)
library(grid)
data(iris)
table_theme <-  ttheme_default(rowhead = list(fg_params=list(parse=TRUE)))
grid.table(head(iris),
  rows = c(letters[c(1:4)], "plotmath~works~omega", "Kendall's"~tau),
  theme = table_theme)

在此处输入图像描述

于 2016-02-01T10:06:57.187 回答
0

尝试在表达式中使用反斜杠,例如"Kendall\'s~tau". 它应该工作。

于 2016-02-01T09:19:48.200 回答
0

如果您的撇号嵌入到较长的字符串中,以及像 ~ 这样的特殊符号,这些解决方案将不起作用。我发现唯一有效的是使用正则表达式替换。

#This doesn't work
stringWithApostrophe="Matt's and Louise's diner~...and~also Ben's diner~X^2"
qplot(1:10,1:10)+annotate("text",x=2,y=4,label=stringWithApostrophe,parse=T)

错误:“解析错误(文本 = 文本 [[i]])::1:5:意外字符串常量”

问题是出现在同一个引用段中的特殊字符(如波浪号和撇号)。所以你必须将“Matt's”与“Louise's”和“~”分开。这是执行此操作的代码。

stringWithApostrophe2<-stringr::str_replace_all(pattern = "([^~()*]*'[^~()*']*)",replacement = "\"\\1\"",string=stringWithApostrophe)
qplot(1:10,1:10)+annotate("text",x=2,y=8,hjust=0,label=stringWithApostrophe2,parse=T)

绘图成功。R 中的 plotmath 正确解析的最终表达式是:““Matt's and Louise's diner”~...and~"also Ben's diner"~X^2"

于 2021-06-23T02:56:59.333 回答
0

我尝试使用带有表达式的撇号在 ggplot 中绘图。在我的数据库中,在表达式中使用 ' 无效,但这有效

expression(paste(u,"'",(t),sep=""))

但是这种“粘贴”也会导致子索引表达式表达式(U[0])的不良行为。因此,将两者一起使用,这个有效

paste(expression(paste("u","'",sep="")),"/U[0]",sep="")

如果有人知道更简单的方法,我会很高兴。

于 2021-03-06T21:04:54.963 回答