Непонятно, как определяется «неполные данные», но, поскольку вопрос больше в том, как фильтровать строки, в которых выполняется определенное условие в списке, я рассмотрел временное условие, а именно выбор строк, где столбец v
tibble имеет первое значение как 0. Это условие может быть изменено после уточнения из OP.
Мы можем использовать filter
для выбора строк и от map_lgl
до l oop над data
столбцом для каждого id
.
library(tidyverse)
mylist %>% filter(map_lgl(data, ~first(.x$v) == 0))
# id data
# <chr> <list<df[,2]>>
#1 a [5 × 2]
Аналогично, в базе R, мы можем использовать subset
с sapply
subset(mylist, sapply(data, function(x) x$v[1] == 0))
data
mylist <- tibble(id = c(rep("a",5),rep("b",4)),
dl = c(seq(1,5,1), seq(1,4,1)),
v = c(seq(0, 40, 10), seq(50, 80, 10))) %>%
group_by(id) %>% nest()