【发布时间】:2015-03-15 17:20:28
【问题描述】:
我想知道如何在 R 中设置包含希腊字母表达式的矩阵的行名。我使用“表达式”,但它似乎不起作用。下面是我的代码。
b.summary = matrix(0, 8, 6)
colnames(b.summary)= c("Min.", "1st Qu.", "Median", "Mean","3rd Qu", "Max." )
rownames(b.summary)= c(expression(paste(tau, "=1", sep="")),expression(paste(sigma^2, "=1", sep="")), expression(paste(tau, "=5",sep="")), expression(paste(sigma^2, "=0.2",sep="")), expression(paste(tau, "=16", sep="")), expression(paste(sigma^2, "=0.0625",sep="")), expression(paste(tau, "1/2.25", sep="")),expression( paste(sigma^2, "=2.25", sep="")) )
当我输入 b.summary 时,显示的行名如下:
paste(tau, "=1", sep = "")
而不是乳胶表达式。
我想要希腊字母的原因是我正在使用 knitr 创建一个动态文档。我想直接显示该矩阵的结果,而不是使用 \Sexpr{} 表达式手动键入矩阵的所有元素来创建表。 knitr 中完整的代码块是
<<coverage.b.summary, eval=TRUE, echo=FALSE>>=
b.summary = matrix(runif(48), 8, 6)
colnames(b.summary)= c("Min.", "1st Qu.", "Median", "Mean","3rd Qu", "Max." )
rownames(b.summary)= labels(expression(paste(tau, "=1", sep="")),expression(paste(sigma^2, "=1", sep="")), expression(paste(tau, "=5",sep="")), expression(paste(sigma^2, "=0.2",sep="")), expression(paste(tau, "=16", sep="")), expression(paste(sigma^2, "=0.0625",sep="")), expression(paste(tau, "=1/2.25", sep="")),expression( paste(sigma^2, "=2.25", sep="")) )
b.summary
@
提前感谢您的帮助!
【问题讨论】:
-
我不确定你会如何表示像 sigma squared 这样的东西,但this question 的公认答案在很大程度上可能会有所帮助。
-
使用矩阵对象有严格的限制,其中之一是行名是字符向量。这些表达式被强制转换为字符向量。最好解释一下这项工作的目标,然后找到限制较少的数据结构。本机 R 中没有 LaTex 表示的概念,因此您需要提前考虑将使用该数据对象的哪种用途。此外,绘图形式的粘贴函数没有“sep”参数。
-
我明白了!非常感谢您提供的信息和建议。然后我将解释这项工作的目标!
-
那么我认为你应该使用
paste(但不是expression)自己构建行名,并且你应该使用@nrussell 提供的提示来生成希腊字母。