Скажем, у нас есть данные таблицы, содержащие строки в нескольких столбцах. Мы хотим найти индексы всех строк, которые содержат определенное значение или, еще лучше, одно из нескольких значений. Однако столбец неизвестен.
В настоящий момент я делаю следующее:
apply(df, 2, function(x) which(x == "M017"))
где df =
1 04.10.2009 01:24:51 M017 <NA> <NA> NA
2 04.10.2009 01:24:53 M018 <NA> <NA> NA
3 04.10.2009 01:24:54 M051 <NA> <NA> NA
4 04.10.2009 01:25:06 <NA> M016 <NA> NA
5 04.10.2009 01:25:07 <NA> M015 <NA> NA
6 04.10.2009 01:26:07 <NA> M017 <NA> NA
7 04.10.2009 01:26:27 <NA> M017 <NA> NA
8 04.10.2009 01:27:23 <NA> M017 <NA> NA
9 04.10.2009 01:27:30 <NA> M017 <NA> NA
10 04.10.2009 01:27:32 M017 <NA> <NA> NA
11 04.10.2009 01:27:34 M051 <NA> <NA> NA
Это также работает, если мы попытаемся найти более одного значения:
apply(df, 2, function(x) which(x %in% c("M017", "M018")))
Результат:
$`1`
integer(0)
$`2`
[1] 1 2 20
$`3`
[1] 16 17 18 19
$`4`
integer(0)
$`5`
integer(0)
Однако обработка полученного списка списков довольно утомительна.
Существует ли более эффективный способ поиска строк, содержащих значение (или больше) в любом столбце?