如何在 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 article,stringr
函数可以使用格式 \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
我正在导入一个带有 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 article,stringr
函数可以使用格式 \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