отбрасывать строки программно на основе содержимого столбца списка - PullRequest
0 голосов
/ 23 января 2019

У меня есть фрейм данных со столбцом списка, v2.

enter image description here

У источника данных есть некоторые проблемы, которые я не воспроизводю здесь.Чтобы обойти эту проблему (не показана), я хотел бы добавить строки в df с более чем 4 переменными в столбце списка v2.

df <- structure(list(v1 = c("a", "b", "c"), 
                     v2 = list(
                       structure(
                         list(
                           v3 = c(1:4),
                           v4 = c(1:4), 
                           v5 = c(1:4), 
                           v6 = c(NA, "", NA, "")), 
                         class = "data.frame", row.names = 1:4),
                       structure(
                         list(
                           v3 = c(1:2),
                           v4 = c(1:2), 
                           v5 = c(1:2),
                           v6 = c(1:2),
                           v7 = c(NA, "")),
                         class = "data.frame", row.names = 1:2), 
                       structure(
                         list(
                           v3 = c(1:2),
                           v4 = c(1:2), 
                           v6 = c(NA, "")),
                         class = "data.frame", row.names = 1:2)), 
                     v8 = c(1:3)), 
                row.names = c(NA, 3L), 
                class = "data.frame")

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Просто для тех, кто хочет использовать purrr:

library(purrr)
library(dplyr)

df %>% 
  filter(map_lgl(v2, ~ncol(.) < 5))

Результат:

# A tibble: 2 x 3
  v1    v2                      v8
  <chr> <list>               <int>
1 a     <data.frame [4 x 4]>     1
2 c     <data.frame [2 x 3]>     3
0 голосов
/ 23 января 2019

Вы можете использовать функцию lengths для получения длины списка и подмножества на основе условия

df[lengths(df$v2) < 5, ]

#  v1                                           v2 v8
#1  a 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, NA, , NA,   1
#3  c                               1, 2, 1, 2, NA,   3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...