string - 用 Latex 代码替换字符串向量中的重音符号

标签 string r diacritics data-manipulation xtable

定义:

df <- data.frame(name=c("México","Michoacán"),dat=c(1,2))

停止

> df
        name dat
1    México   1
2 Michoacán   2

当我使用 xtable 将此表打印到 .tex 文件时,重音字符会出现乱码,这不足为奇。

我想用适当的 Latex 格式替换重音符号,例如:

> df
     name dat
1 M\'{e}xico   1
2 Michoac\'{a}n   2

请注意,在真实的数据集中,有许多不同的名称具有不同的重音字母,但都具有相同类型的重音(即斜杠),因此唯一需要更改的是 \'{。} code> 是代替点的字母。

在尝试一位读者的建议时,我做了以下事情:

> df <- data.frame(name=c("México","Michoacán"),dat=c(1,2))
> df
        name dat
1    México   1
2 Michoacán   2
> df$name <- sub("é", "\\\\'{e}", df$name,)
> df
         name dat
1 M\\'{e}xico   1
2  Michoacán   2
> capture.output(
+       print(xtable(df)),
+       file = "../paper/rTables.tex", append = FALSE)

当我在记事本中打开 rTables.tex 文件时:

% latex table generated in R 2.13.1 by xtable 1.5-6 package
% Fri Jul 15 13:19:17 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlr}
  \hline
 & name & dat \\ 
  \hline
1 & M$\backslash$'\{e\}xico & 1.00 \\ 
  2 & Michoacán & 2.00 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

这不是我们需要的。

最佳答案

使用 stringr 包,一次替换每种类型的重音字符。

library(stringr)
df$name <- str_replace_all(df$name, "é", "\\\\'{e}")  
df$name <- str_replace_all(df$name, "á", "\\\\'{a}")
df$name

关于string - 用 Latex 代码替换字符串向量中的重音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697757/

相关文章:

python - 不使用正则表达式删除字符串中的标点符号和空格

python - 如何按另一个列表中出现的字符拆分字符串?

java - 在 Solaris 上使用 Java 的文件名重音

ffmpeg + libavfilter 的 drawtext 不打印重音字符

java - 检查 'null' 的条件

C - 从文件中选择随机字符串

xml - 如何从 xml 文件创建 R 数据框?

r - 使用 .SD 计算 data.table 中列子集的累积和

r - 如何在ggplot2中重新排序图例?

ruby-on-rails - Rails - 带变音符号的链接名称