如何在 R 脚本中处理 Unicode 字符“✧”(U+2727)

How do I handle Unicode Character “✧” (U+2727) in an R script

我正在导入一个带有 unicode 字符“✧”(U+2727) 的 csv 文件。字符导入正常,但是当我尝试使用以下代码时:

mutate(s = if_else(str_detect(my_str, '\='), 'T', if_else(str_detect(my_str, "✧"),'P','D')))

where my_str <- "✧ 5+"

我收到以下错误:

Error in source("~/TimeForm/Scripts/RagsFigs.R", encoding = "UTF-8", echo = TRUE) : 
  ~/TimeForm/Scripts/RagsFigs.R:28:81: unexpected INCOMPLETE_STRING
27:   select(-mod) %>% 
28:   mutate(s = if_else(str_detect(my_str, '\='), 'T', if_else(str_detect(my_str, "

这种情况有解决办法吗?我已尝试通过编码和转义字符来保存,但我似乎无法使代码正常工作。

根据 this articlestringr 函数可以使用格式 \uhhhh 读取 4 位十六进制数字,其中 h 表示十六进制数字。在您的特定情况下,以下内容应该可以检测 U+2727:

mutate(df, s = if_else(str_detect(my_str, '\='), 'T', if_else(str_detect(my_str, "\u2727"),'P','D'))`

与您的问题无关,但我也建议使用 case_when() 以避免嵌套 if_else():

mutate(df, s = case_when(str_detect(my_str, '\=') ~ 'T',
                         str_detect(my_str, "\u2727") ~ 'P',
                         TRUE ~ 'D'))

有关 case_when() 的更多信息可在此处获取:https://dplyr.tidyverse.org/reference/case_when.html