Получение вектора со всеми «ИСТИННЫМИ» вхождениями из списка на языке R - PullRequest
1 голос
/ 29 марта 2019

Я занимаюсь анализом текста, и мне нужен конечный вектор (вхождения), чтобы иметь только одно ИСТИНА для слов, которые появляются в других векторах. Например:

Из этого вектора test = c("1","2","4","6")

y = c("5","2")
x = c("3","2", "2", "4", "3", "1")

и следующий список:

list_test = list(y ,x, "1")

Мне нужно, чтобы вхождения были:

print(occurrences)
TRUE TRUE TRUE

# but I'm getting 
> print(occurrences)
[1] TRUE TRUE

Где у меня неправильный алгоритм?

test = c("1","2","4","6")
occurrences = c()
double_occurrences = c()
all_occurrences = c()

y = c("5","2")
x = c("3","2", "2", "4", "3", "1")

list_test = list(y ,x, "1")

for(comment_test in test){
  for(testword in list_test){    
    if (length(testword) > 1){
      for(i in 1: length(testword)){
        for (keyword in grepl(comment_test, testword[i], fixed=TRUE)){
          if (keyword == TRUE){
            double_occurrences = c(double_occurrences, keyword) 
          }
        }
      }
  } else {
    keyword = grepl(comment_test, testword, fixed=TRUE)
      if (keyword == TRUE){
        occurrences = c(occurrences, keyword) 
        }
      }
  }
  if((length(double_occurrences)) > 1){ # To several lists of words just ONE TRUE
    double_occurrences =  c(TRUE)
    all_occurrences = c(all_occurrences, double_occurrences)
    double_occurrences = c()
  }
}

occurrences = c(occurrences, all_occurrences)
print(occurrences)

фактический вывод

print(occurrences)
TRUE TRUE

и ожидайте иметь

print(occurrences)
TRUE TRUE TRUE

1 Ответ

1 голос
/ 29 марта 2019

как насчет этого:

test %in% unlist(list_test)
#[1]  TRUE  TRUE  TRUE FALSE

нет необходимости в for циклах, поскольку оператор %in% векторизован.вывод представляет собой логический вектор такой же длины, что и test, каждый элемент которого равен TRUE, если соответствующий элемент в test содержит list_test, и FALSE в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...