Изменение функции для добавления дополнительного поиска для определенного значения - PullRequest
0 голосов
/ 03 октября 2018

С помощью следующей функции я выполняю поиск в списке (my_list) и возвращает элементы списка, в которых есть любой столбец с «.Positivedata»

#Function to give me the names of elements in a list with any column with character 
 ".Positivedata" (Works OK)


names(my_list)[sapply(my_list, function(x) any(grep(".Positivedata", names(x))))]

Теперь я хотел бы изменить функцию навернуть, какие из имен имеют значение «4» в столбце «.Positivedata»

Где я могу поставить «== 4» в функции?

  names(my_list)[sapply(my_list, function(x) any(grep(".Positivedata", names(x))) )]

1 Ответ

0 голосов
/ 03 октября 2018

Мы перебираем list, подставляем в столбец grep, проверяем, равно ли это 4, и используем which, чтобы получить позицию

lapply(my_list, function(x) which(x[, grep("\\.Positivedata", names(x))] == 4))

Если естьнесколько столбцов, тогда было бы лучше получить индекс строки / столбца

lapply(my_list, function(x) 
    which(x[, grep("\\.Positivedata", names(x))] == 4, arr.ind = TRUE))

Если мы хотим, чтобы имя столбца было среди столбцов, которые .Positivedata имеют значение '4'

sapply(my_list, function(x) {
         nm1 <- grep("\\.Positivedata", names(x), value = TRUE)
         nm1[sapply(x[nm1], function(x) any(x==4))]
         })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...