【发布时间】:2018-03-09 01:03:03
【问题描述】:
我有数百个带有'Combining Diacritical Marks' (Unicode General Category Mn) 的文件名。当我使用 list.files() 函数时,我无法让 R 读取或打开这些文件,因为 R 将带有“组合变音符号”(例如 \u301 和 \u308)的文件名转换为 \xb4 和 \xa8 , 分别。结果是系统找不到不同的文件名。如何防止 R 替换这些字符?
在文件名列表上应用 gsub() 函数以用组合的重音替换独立的重音(即 filenames <- gsub("A´", "Á", filenames) 将“A´”更改为单个 unicode 字符“Á”,而不是双 unicode字符“Á”不是同一个东西,因此系统找不到具有该名称的文件。(粘贴到文本编辑器中查看它们不一样。)
即使将双 unicode 字符“Á”传递给 print("Á") 并从控制台运行也会返回单个 unicode 字符“Á”。但是,print("A\u301") 返回正确的双 unicode 字符“Á”。而gsub("A´", "A\u301", "A´") 返回"A´"。
看来stringi::stri_trans_nf*() 函数是一个可能的解决方案,但我不确定如何使用list.files() 或gsub() 函数返回一个文件名列表,然后系统可以正确解释这些文件名。
【问题讨论】: