首页 > 解决方案 > 在 R 的列表中过滤 TRUE/FALSE 的函数

问题描述

我有两个清单:

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

$`1`
[1] TRUE

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

$`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

标签: rlistdatatablesubset

解决方案


尝试这个:

#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)]))

请注意,您有列表而不是数据框。


推荐阅读