R, String Match или String match комбинация строк

У меня есть набор строк, таких как «Великобритания», «Соединенные Штаты», «Китай», «Индия», и другая строка должна быть сравнена с набором вышеуказанных строк, и может быть комбинацией нескольких значений набора выше строки, разделенные "|" .

Пример:

String1 <- "China"
String2 <- "United States|China"
String3 <- "United States|India|China"
SetoFStrings <- c("United Kingdom","United States","China","India")

Таким образом, во всех случаях при сравнении String1, String2, String3 с SetofStrings значение результата должно быть истинным. Как это может быть сделано


person Shivpe_R    schedule 24.05.2017    source источник


Ответы (1)


Мы можем использовать any с grepl

any(grepl(String1, SetoFStrings))
#[1] TRUE
any(grepl(String2, SetoFStrings))
#[1] TRUE
any(grepl(String3, SetoFStrings))
#[1] TRUE

Если цель состоит в том, чтобы создать «Строку», как во входном сообщении

sapply(dat2$Strings, function(pat) any(grepl(pat, SetoFStrings)))

данные

dat1 <- data.frame(Col1 = c('China', 'UnitedStates', 'India'), stringsAsFactors= FALSE)
dat2 <- data.frame(Strings =  Reduce(function(...) paste(..., sep="|"), 
           dat1$Col1, accumulate = TRUE), stringsAsFactors=FALSE) 
person akrun    schedule 24.05.2017
comment
и как его можно перенести вперед, String1, String2, String3 в столбце фрейма данных, весь столбец следует сравнивать с SetoFStrings? Использование функции «Применить»? - person Shivpe_R; 24.05.2017
comment
@Shivpe_R Из комментариев непонятно. Можете ли вы обновить свой вопрос и ожидаемый результат - person akrun; 24.05.2017
comment
@Shivpe_R Возможно any(grepl(paste(unique(as.character(yourdata$Col)), collapse="|"), SetoFStrings)) - person akrun; 24.05.2017
comment
У меня есть столбец в кадре данных, который содержит значения, такие как String1, String2, String3, до 200 значений, и каждое значение в столбце должно быть сопоставлено с SetoFStrings, поэтому после сравнения с SetoFStrings ожидается столбец, например TRUE TRUE FALSE. и так далее - person Shivpe_R; 24.05.2017
comment
@Shivpe_R У вас есть такой же SetoFStrings для сравнения? - person akrun; 24.05.2017
comment
Да SetoFstrings является константой - person Shivpe_R; 24.05.2017
comment
@Shivpe_R обновил пост - person akrun; 24.05.2017