【问题标题】:matrix/data frame of special characters特殊字符的矩阵/数据框
【发布时间】:2013-11-24 01:16:51
【问题描述】:

我正在尝试构建一个包含特殊字符的 R 矩阵/数据框。例如,一个单元格将包含"2\u00B15\u00B3"(即“2±5³”)。

我需要在上标中使用拉丁小写字母,而不是数字上标,我只能找到 Unicode for few alphabets as superscripts

我熟悉绘图函数中的所有特殊符号(例如用于标记轴、标题等),但我需要矩阵中的“上标”。

编辑:我想做这样的事情,只有一个例外,而不是 3.5\u00B12\u00B3 的上标中的 3,我想要拉丁字母。

require(rtf)
rtf<-RTF("./Doc/test_addTable.doc",width=8.5,height=11,font.size=10,omi=c(1,1,1,1))

A = data.frame(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4),
Sepal.Width = c(3.5, 3, 3.2, 3.1, 3.6, 3.9),
Petal.Length = c(1.4,  1.4, 1.3, 1.5, 1.4, 1.7), Petal.Width = c(0.2, 0.2, 0.2,0.2,0.2, 0.4))

A[1,2] = "3.5\u00B12\u00B3"

addTable(rtf,A,font.size=10,row.names=FALSE,NA.string="-",col.widths=rep(1,4))

done(rtf)

感谢您的宝贵时间。

【问题讨论】:

  • “矩阵内”这个短语有点不清楚。您能否更具体地说明这个“矩阵”的预期要求是什么?

标签: r character symbols


【解决方案1】:

在 R 中有一个类似于 mini-LaTeX 的系统,但称为“plotmath”。它被赶出表达式对象,并在表达式达到 text=plotting 值时被调用。如果你不打算绘制它,那么拥有这样一个矩阵并没有多大意义,所以我将说明如何将字符值提升为上标。

?plotmath
plot(1,1)
text( x=c(.8), y=c(1.2), substitute( 2%+-%5^x, list(x="A") ))

这比单个实例可能需要的要复杂一些,但这是为了提高通用性。你也可以这样做:

text( x=c(.8), y=c(.8), expression(2%+-%5^B) )

如果你只想要一个 plotmath 矩阵(字符形式):

mat <- matrix( c( '2%+-%5^B' , '2%+-%5^C',
                  '2%+-%5^D' , '2%+-%5^B'), 2, 2)
mat

你不能(或者至少我不能)真正构造一个真正的 R 表达式对象作为矩阵:

 mat <- matrix( expression(2%+-%5^B , 2%+-%5^C,
                   2%+-%5^D , 2%+-%5^B), 2, 2)
     mat
#expression(2 %+-% 5^B, 2 %+-% 5^C, 2 %+-% 5^D, 2 %+-% 5^B)
> str(mat)
length 4 expression(2 %+-% 5^B, 2 %+-% 5^C, 2 %+-% 5^D) ...
 - attr(*, "dim")= int [1:2] 2 2
> mat[1,1]
Error in mat[1, 1] : matrix subscripting not handled for this type
> mat[1]
expression(2 %+-% 5^B)
> mat[2]
expression(2 %+-% 5^C)
> mat[3]
expression(2 %+-% 5^D)

我确实设法让矩阵函数将维度附加到表达式对象,但 print[ 都不会尊重该维度。我仍然不清楚目标。在rtf 包中,我看到了 addTable 方法,我想知道您是否真的想要一个对象,该对象将由支持 rtf 的应用程序以“矩阵”或表格形式打印?

哈....我想我有它:

 mat <- matrix( c( '2\\+/-5 {\\up3B}' , '2%+-%5 \\up5C',
                   '2%+-%5\\up3B' , '2%+-%5\\up4H'), 2, 2)
 mat
#     [,1]               [,2]          
#[1,] "2\\+/-5 {\\up3B}" "2%+-%5\\up3B"
#[2,] "2%+-%5 \\up5C"    "2%+-%5\\up4H"
 rtf<-RTF("test_addTable.doc",width=8.5,height=11,
                  font.size=10,omi=c(1,1,1,1))
 addTable(rtf, mat)
 done(rtf)

此外,我想我已经找出了加减号。试试:

 "2\\u177BD5 {\\up3B}"

【讨论】:

  • 感谢您的回复。我知道“plotmath”以及您可以编写类似 Latex 的表达式的事实(我也熟悉 knitr 等)。我需要构建一个字符矩阵(无绘图),其中单元格的形式为“a%+-%b^c”(不使用 knitr,因为我想使用 rtf 包将其导出到 .rtf 文件)。我希望这是有道理的。
  • 所以更多的问题是rtf解析器会将哪种字符参数解释为上标?根据biblioscape.com/rtf15_spec.htm,它可能是\upN。你建议什么样的成功测试? (并且所有这些添加的信息应该用于编辑您的原始问题。它仍然没有足够的代码来成为真正的 SO 问题。)
  • 非常感谢。这是我第一次在这里问;如果我在错误的区域添加我的 cmets,我深表歉意。感谢您的帮助!
  • 所以 plotmath 完全没用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2015-07-20
  • 1970-01-01
相关资源
最近更新 更多