【发布时间】:2020-10-03 22:56:13
【问题描述】:
我有一个包含感兴趣的 Unicode 代码点的两列文本文件(此测试中的希腊符号,但通常是任何 Unicode 字符集):
$ cat ut.txt
\u0391 Α
\u0392 Β
\u0393 Γ
\u0394 Δ
\u0395 Ε
\u0396 Ζ
...
我想把它读到 R 中,这样我就可以在我用来制作包含数学或其他 Unicode 符号的图的字体上踢轮胎了。
作为一个可重复性最低的开始,我首先从这个 Unicode 表中抽取一个随机样本:
set.seed(42)
df <- data.frame(date = 1:10 , value = cumsum(runif(10 , max = 10)) )
ut <- read.table("ut.txt", allowEscapes=TRUE)
df$labels <- paste("\\", sample(ut$V1, size=10), sep="")
数据框的头部是这样的:
date value labels
1 1 9.14806 \\u03A8
2 2 18.51881 \\u03BB
3 3 21.38021 \\u03C4
4 4 29.68469 \\u039C
5 5 36.10214 \\u03A6
6 6 41.29310 \\u03C2
当我从labels 列绘制时,R 写出文字字符串,而不是它所代表的 Unicode 字符:
library(ggplot2)
p <- ggplot(df, aes(x=date, y=value, label=labels))
p <- p + geom_line()
p <- p + ggtitle("5\u03BCg (\u03C7-squared test)") # control title
p <- p + geom_text()
library(Cairo)
ggsave("test.pdf", device=cairo_pdf)
这是测试图的样子:
我希望看到的是沿线每个点的希腊符号,而不是它们的文字字符串等价物。
如何从文本文件中读取一组 Unicode 代码点并直接使用它们?
重要提示:我从ut.txt 的第二列进行了测试抽样,它有效。但是,我特别有兴趣了解从文件中正确读取等效的编码代码点所需的内容。
【问题讨论】:
-
手工编码的两个答案,太荒谬了。你可以改用
ut$V2 -
正如我在注释中所说,我可以使用
ut$V2。我的问题是关于使用第一列。 -
df$labels <- sprintf('"%s"', df$labels)和geom_text(parse = TRUE)