Я хотел бы проверить, содержит ли строка только один тип символов
Например
INPUT:
str = "AAAAB"
char = "A"
OUTPUT:
str contains only char = FALSE
С grepl(char,str)
результат ИСТИНА, но я хочу, чтобы он был ЛОЖЬ.
Большое спасибо
Я хотел бы проверить, содержит ли строка только один тип символов
Например
INPUT:
str = "AAAAB"
char = "A"
OUTPUT:
str contains only char = FALSE
С grepl(char,str)
результат ИСТИНА, но я хочу, чтобы он был ЛОЖЬ.
Большое спасибо
Вам нужно использовать оператор not
для регулярного выражения, в вашем случае это будет:
> !grepl("[^A]", "AAA")
[1] TRUE
> !grepl("[^A]", "AAAB")
[1] FALSE
С переменными:
grepl(paste0("[^", char, "]"), srt)
Если вы хотите проверить определенный символ (в char
):
str <- "AAAAB"
char = "A"
all(unlist(strsplit(str, "")) == char)
#[1] FALSE
str <- "AAAA"
char = "A"
all(unlist(strsplit(str, "")) == char)
#[1] TRUE
Или, если вы хотите проверить, содержит ли строка только один уникальный символ (любой):
str <- "AAAAB"
length(unique(unlist(strsplit(str, "")))) == 1
#[1] FALSE
str = "AAAA"
length(unique(unlist(strsplit(str, "")))) == 1
#[1] TRUE
Другой вариант — использовать charToRaw
и проверить его уникальность:
xx <- "AAAAB"
length(unique(charToRaw(xx))) ==1
[1] FALSE
char = "A"
в качестве входных данных
- person David Arenburg; 06.08.2014
Вы можете использовать stri_count
из пакета "stringi", например:
library(stringi)
stri_count_fixed(str, char) == nchar(str)
# [1] FALSE
Использование gregexpr
char = "A"
str = "AAAA"
length(unlist(gregexpr(char, str))) == nchar(str)
## [1] TRUE
str = "ABAAA"
length(unlist(gregexpr(char, str))) == nchar(str)
## [1] FALSE
str
равен""
. Например, решение m0nhawk выведетTRUE
в данном случае (!grepl("[^A]", "")
), что может быть или не быть тем, что вам нужно. - person Stephan Kolassa   schedule 06.08.2014