Подтвердить что ты не робот

Нечувствительный к регистру поиск списка в R

Можно ли искать список символов для строки, где я не знаю, как строка обведена? Или, в более общем плане, я пытаюсь ссылаться на столбец в фреймворке данных, но я точно не знаю, как столбцы обходятся. Моя мысль заключалась в том, чтобы искать имена (myDataFrame) нечувствительным к регистру образом, чтобы вернуть правильную оболочку столбца.

4b9b3361

Ответ 1

Предполагая, что нет имен переменных, которые отличаются только в случае, вы можете искать имя всей строчной переменной в tolower(names(myDataFrame)):

match("b", tolower(c("A","B","C")))
[1] 2

Это приведет к получению только точных совпадений, но это, вероятно, желательно в этом случае.

Ответ 2

Я бы предложил функцию grep() и некоторые ее дополнительные аргументы, которые с удовольствием используют.

grep("stringofinterest",names(dataframeofinterest),ignore.case=TRUE,value=TRUE)

без аргумента value=TRUE вы получите только вектор позиций индекса, где произошло совпадение.

Ответ 3

Пакет searchable был создан для разрешения различных типов поиска внутри объектов:

l <- list( a=1, b=2, c=3 )
sl <- searchable(l)        # make the list "searchable"
sl <- ignore.case(sl)      # turn on case insensitivity

> sl['B']
$b
[1] 2

Он работает со списками и векторами и делает намного больше, чем простое нечувствительное к регистру сопоставление.

Ответ 4

Если вы хотите искать один набор строк в другом наборе строк, регистр нечувствителен, вы можете попробовать:

s1 = c("a", "b")
s2 = c("B", "C")
matches = s1[ toupper(s1) %in% toupper(s2) ]