【发布时间】:2017-11-11 21:51:12
【问题描述】:
此问题与utf-8 package for R 有关。我有一个奇怪的问题,我希望我正在使用的数据集中的表情符号保持代码点表示(即作为'\U0001f602')。我想使用Data Combine package 中的'FindReplace' 函数将UTF-8 编码转换为dataset of YouTube comments 中表情符号的散文描述(使用我提供的字典here)。唯一的问题是,当我将输出“保存”为 R 中的对象时,utf8_encode 生成的漂亮 utf-8 编码可以使用我的字典,它会消失...
首先我要稍微调整一下字典:
emojis$YouTube <- tolower(emojis$Codepoint)
emojis$YouTube <- gsub("u\\+","\\\\U000", emojis$YouTube)
转为字符以便能够使用utf8_encode:
emojimovie$test <- as.character(emojimovie$textOriginal)
这很好用,提供 \U0001f595 (等)的输出,当它在控制台中“打印”时可以与字典条目匹配。
utf8_encode(emojimovie$test)
但是,当我这样做时:
emojimovie$text2 <- utf8_encode(emojimovie$test)
然后:
emoemo <- FindReplace(data = emojimovie, Var = "text2", replaceData = emojis, from = "YouTube", to = "Name", exact = TRUE)
我得到了所有的 NA。当我使用 View 查看 $text2 中的输出时,我没有看到 \U0001f595,而是看到了实际的表情符号。我认为这就是FindReplace 函数不起作用的原因——当它被保存到一个对象时,它只是再次被表示为表情符号并且该函数找不到任何匹配项。然而,当我尝试gsub("\U0001f602", "lolface", emojimovie$text2) 时,我实际上可以匹配和替换东西,但我不想对所有大约 2,000 个左右的表情符号都这样做......我已经尝试尽可能多地阅读关于 utf- 的内容8,但我不明白为什么会这样。我难住了! :P
【问题讨论】: