Subset elementos em uma lista com base em uma condição lógica

Como posso definir um subconjunto de uma lista com base em uma condição (TRUE, FALSE) em outra lista? Por favor, veja meu exemplo abaixo:

l <- list(a=c(1,2,3), b=c(4,5,6,5), c=c(3,4,5,6))
l
$a
[1] 1 2 3

$b
[1] 4 5 6 5

$c
[1] 3 4 5 6

cond <- lapply(l, function(x) length(x) > 3)
cond
$a
[1] FALSE

$b
[1] TRUE

$c
[1] TRUE

> l[cond]

Erro em l [cond]: tipo de subscrito inválido 'list'

questionAnswers(6)

yourAnswerToTheQuestion