我在.csv文件中输入了一个文本字符串,其中包括unicode符号:\U00B5g/dL。
在.csv文件以及R数据框中读取:
test=read.csv(“test.csv”)
\U00B5将产生微符号-µ。R按原样将其读入数据文件(\U00B5)。但是,当我打印字符串时,它显示为\\U00B5 g/dL
或者,手动输入代码也可以
varname<;-c(“a”、“b”、“c”)
标签<;-c(“A\U00B5 g/dL”、“B\U00B5 g/dL”、“c\U00B5 g/dL”)
df<;-data.frame(变量名、标签)
测试<;-data.frame(变量名、标签)
测验
#varname标签
#1微克/分升
#2微克/分升
#3立方厘米微克/分升
我想知道在这种情况下,我怎样才能去掉逃逸标志\,让它打印出符号。
或者,如果有其他方法以R打印符号
非常感谢您的帮助
首先要了解,如果R中的某些字符超出标准ASCII字符,则必须对其进行转义。通常使用“\”字符完成此操作。这就是为什么在R中写入字符串时需要转义此字符:
a<;-“\”错误
a<;-“好的。
“\U”是unicode转义的特殊指示符。请注意,使用此转义时,字符串本身中没有斜杠或U。它只是指向特定角色的快捷方式。注:
a<;-“\U00B5”
猫(a)
# µ
格雷普(“U”,a)
#整数(0)
nchar(a)
# [1] 1
这与字符串非常不同
a<;-“\\U00B5”
猫(a)
#\U00B5
格雷普(“U”,a)
# [1] 1
nchar(a)
# [1] 6
通常,当您导入文本文件时,您将以文件使用的任何编码方式对非ASCII字符进行编码(UTF-8或拉丁语-1是最常见的)。它们有特殊的字节来表示这些字符。对于文本文件来说,unicode字符具有ASCII转义序列是不“正常”的。这就是为什么R不尝试将“\U00B5”转换为unicode字符的原因,因为它假定如果您想要unicode字符,您只需要直接使用它
重新设置ASCII字符值的最简单方法是使用stringi包。比如说
库(stringi)
a<;-“\\U00B5”
stri_unescape_unicode(gsub(“\\U”,“\\U”,a,fixed=TRUE))
(唯一的问题是我们需要将“\U”转换为更常见的“\U”,以便函数正确识别转义)。您可以使用对导入的数据执行此操作
测试$label<;-stri_unescape_unicode(gsub(“\\U”,“\\U”,test$label,fixed=TRUE))