какая функция для фильтрации TRUE / FALSE в списке в R

#r #list #datatable #subset

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

Вопрос:

У меня есть два списка:

 test1
$`0`
[1] "Mean relative difference: 0.005401506 in referenceBasedPrice."


 #r #list #datatable #subset

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

Вопрос:

У меня есть два списка: 1` [1] TRUE

и

 > test2
$`0`
[1] "Mean relative difference: 0.005401506 in referenceBasedPrice."


 #r #list #datatable #subset

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

Вопрос:

У меня есть два списка:
 test1
$`0`
[1] "Mean relative difference: 0.005401506 in referenceBasedPrice."


 #r #list #datatable #subset

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

Вопрос:

У меня есть два списка: 1` [1] TRUE

и

1`
[1] "some text"

Я хочу сохранить только те элементы списков, которых НЕТ TRUE , для которых я написал:

 > test1 = test1[-which(sapply(test1, isTRUE))]
> test1
$`0`
[1] "Mean relative difference: 0.005401506 in referenceBasedPrice."
 

но, похоже, она не работает должным образом во втором списке, который не содержит никакого TRUE:

 > test2 = test2[-which(sapply(test2, isTRUE))]
> test2
named list()
 

Почему это не работает для списка test2 ?

Ответ №1:

Попробуйте это:

 #Data
test1 <- list(`0`="Mean relative difference: 0.005401506 in referenceBasedPrice.",
              `1`=T)
#Code
lapply(test1, function(x) x[!isTRUE(x)])
 

Или это:

 #Code 2
unlist(lapply(test1, function(x) x[!isTRUE(x)]))
 

Обратите внимание, что у вас есть списки, а не фреймы данных.