过滤器不适用于 R 中带有短音符“й”的西里尔字母

问题描述 投票:0回答:1

我对 R 中的过滤器有点困惑,它似乎不适用于带短符号(©)的西里尔字母。这是我的数据的简化数据框,其中包含 1363 行。

df <- data_frame(lex_1 = c('гей', "лесбиянка", "гей", "трансгендер", "гей", "лесбиянка"),
                 lex_2 = c("лесбиянка", "лесбиянка", "трансгендер", "трансгендер", "гей", "гей"),
                 w1w2 = c(10, 20, 25, 40, 65, 90),
                 w1 = c(1, 2, 3, 4, 5, 6),
                 w2 = c(6, 5, 4, 3, 2, 1))

现在,从这个数据框中,我想过滤 lex_1 上的“гей”字符串,所以我使用了这段代码

kolokasi_gay <- df[df$lex_1=="гей",]

但是,这是过滤的结果。它不检索任何内容。

但是当我将过滤器的单词更改为“трансгендер”时,它工作得非常好。

kolokasi_gay <- df[df$lex_1=="трансгендер",]

现在我想知道,哪里出了问题?为什么它不想只过滤带有短音“й”的单词?

感谢您的帮助,谢谢。

我尝试更改要过滤的单词,当该单词没有任何短音变音符号时,它起作用了。

r filter cyrillic
1个回答
0
投票

该字符有一个 Unicode

utf8ToInt("й")
[1] 1081

您的数据框似乎使用“и”和“̆”的合并版本

utf8ToInt("й")
[1] 1080  774

您可以使用

检查两者
grepl(paste0(intToUtf8("1080"), intToUtf8("774"), "|", intToUtf8("1081")), df$lex_1)
[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE
© www.soinside.com 2019 - 2024. All rights reserved.