我正在尝试构建一个带有特殊字符的R矩阵/数据帧。例如,一个单元格将包含"2\u00B15\u00B3"
(即“2±5³”)。
我需要在上标中使用拉丁语小写字母,而不是数字上标,我只能找到Unicode for few alphabets as superscripts。
我熟悉绘图函数中的所有特殊符号(例如标记轴,标题等),但我需要矩阵内的“上标”。
编辑:我想做这样的事情,只有一个例外,而不是3.5\u00B12\u00B3
中supescript中的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)
感谢您的时间。
答案 0 :(得分:0)
在R中,有一个类似迷你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}"