выбор элементов, превышающих определенное число в списке

#r #list #subset #apply

#r #Список #подмножество #применить

Вопрос:

У меня есть список с большой структурой, похожей на эту:

 BigList = 
[[1]]
[1] matrix
[2] array
[3] data.frame
[4] data.frame
[5] integer
[6] character
  ...
[26]

[[2]]
[1] 
  ...
[26]

[[3]]
[1] 
  ...
[26]

[[4]]
... 
  

Я пытаюсь получить данные, превышающие 10, из элемента 5 (с именем «n» в моем списке) каждого списка, используя:

Listsubset = laply(большой список, функция(x) x$n[n>10]) Не работает

а также используйте это:

Listsubset = laply(filo_main_data, function(x) x $ n > 10), который сработал, но дал мне результат логической информации (TRUE или FALSE), и я хотел бы получить, какие значения n являются ИСТИННЫМИ.

Ответ №1:

Вы можете использовать Filter :

 Listsubset <- Filter(function(x) x$n > 10, BigList)
  

Или альтернатива с sapply :

 Listsubset <- BigList[sapply(BigList, `[[`, 'n') > 10]
  

Комментарии:

1. что означает оператор ‘[[‘, пожалуйста?

2. @BMT [[ заключается в извлечении значения в виде вектора. Здесь в каждом элементе BigList мы извлекаем элемент с именем «n» в нем в виде вектора и сравниваем его с 10 ( > 10 ). Смотрите ?Extract для получения более подробной информации.

3. Спасибо за ваш ответ и советы, @Ronak Shah.

Ответ №2:

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

  BigList[unlist(lapply(BigList, `[[`, "n")) > 10]