从字符串中提取西里尔字母
Extract Cyrillic letters from string
下面的函数从字符串中提取英文字母表中的任何字母。
is.letter <- function(x) grepl("[:alpha:]", x)
我想构建一个类似的函数,它只从给定的字符串中提取循环字母。
更新:
使用 Wiktor Stribiżew 提供的代码,我得到以下结果:
grepl("\p{Cyrillic}", x, perl=TRUE)
test[, c(2, 11)]
MOBILE_NUMBER contain_cyrlic
1 НЕМА ТЕЛЕФОН FALSE
2 НЕПОЗНАТ FALSE
3 НЕМА ТЕЛЕФОН FALSE
4 НЕМА ТЕЛЕФОН FALSE
有什么想法吗?
stringi
可能会为您提供更多 cross-platform/system 一致的结果,但 stri_detect_regex
和 grepl
(在 "perl" 模式下)应该可以解决问题:
library(stringi)
library(dplyr)
data_frame(
MOBILE_NUMBER = c("НЕМА ТЕЛЕФОН", "НЕПОЗНАТ", "НЕМА ТЕЛЕФОН", "НЕМА ТЕЛЕФОН")
) -> tst
tst
## # A tibble: 4 × 1
## MOBILE_NUMBER
## <chr>
## 1 НЕМА ТЕЛЕФОН
## 2 НЕПОЗНАТ
## 3 НЕМА ТЕЛЕФОН
## 4 НЕМА ТЕЛЕФОН
(t1 <- mutate(tst, is_cyrillic = grepl("\p{Cyrillic}", MOBILE_NUMBER, perl=TRUE)))
## # A tibble: 4 × 2
## MOBILE_NUMBER is_cyrillic
## <chr> <lgl>
## 1 НЕМА ТЕЛЕФОН TRUE
## 2 НЕПОЗНАТ TRUE
## 3 НЕМА ТЕЛЕФОН TRUE
## 4 НЕМА ТЕЛЕФОН TRUE
(t2 <- mutate(tst, is_cyrillic = stri_detect_regex(MOBILE_NUMBER, "\p{Cyrillic}")))
## # A tibble: 4 × 2
## MOBILE_NUMBER is_cyrillic
## <chr> <lgl>
## 1 НЕМА ТЕЛЕФОН TRUE
## 2 НЕПОЗНАТ TRUE
## 3 НЕМА ТЕЛЕФОН TRUE
## 4 НЕМА ТЕЛЕФОН TRUE
identical(t1, t2)
## [1] TRUE
下面的函数从字符串中提取英文字母表中的任何字母。
is.letter <- function(x) grepl("[:alpha:]", x)
我想构建一个类似的函数,它只从给定的字符串中提取循环字母。
更新:
使用 Wiktor Stribiżew 提供的代码,我得到以下结果:
grepl("\p{Cyrillic}", x, perl=TRUE)
test[, c(2, 11)]
MOBILE_NUMBER contain_cyrlic
1 НЕМА ТЕЛЕФОН FALSE
2 НЕПОЗНАТ FALSE
3 НЕМА ТЕЛЕФОН FALSE
4 НЕМА ТЕЛЕФОН FALSE
有什么想法吗?
stringi
可能会为您提供更多 cross-platform/system 一致的结果,但 stri_detect_regex
和 grepl
(在 "perl" 模式下)应该可以解决问题:
library(stringi)
library(dplyr)
data_frame(
MOBILE_NUMBER = c("НЕМА ТЕЛЕФОН", "НЕПОЗНАТ", "НЕМА ТЕЛЕФОН", "НЕМА ТЕЛЕФОН")
) -> tst
tst
## # A tibble: 4 × 1
## MOBILE_NUMBER
## <chr>
## 1 НЕМА ТЕЛЕФОН
## 2 НЕПОЗНАТ
## 3 НЕМА ТЕЛЕФОН
## 4 НЕМА ТЕЛЕФОН
(t1 <- mutate(tst, is_cyrillic = grepl("\p{Cyrillic}", MOBILE_NUMBER, perl=TRUE)))
## # A tibble: 4 × 2
## MOBILE_NUMBER is_cyrillic
## <chr> <lgl>
## 1 НЕМА ТЕЛЕФОН TRUE
## 2 НЕПОЗНАТ TRUE
## 3 НЕМА ТЕЛЕФОН TRUE
## 4 НЕМА ТЕЛЕФОН TRUE
(t2 <- mutate(tst, is_cyrillic = stri_detect_regex(MOBILE_NUMBER, "\p{Cyrillic}")))
## # A tibble: 4 × 2
## MOBILE_NUMBER is_cyrillic
## <chr> <lgl>
## 1 НЕМА ТЕЛЕФОН TRUE
## 2 НЕПОЗНАТ TRUE
## 3 НЕМА ТЕЛЕФОН TRUE
## 4 НЕМА ТЕЛЕФОН TRUE
identical(t1, t2)
## [1] TRUE