Как удалить датафреймы, где nrow - PullRequest
2 голосов
/ 17 октября 2019

У меня есть список данных, размер которых варьируется. Я хочу отбросить те, у которых мало строк (скажем, <3). </p>

Это то, с чем я работал до сих пор, для чего оно стоит:

d1 <- data.frame(y1 = c(1, 2, 3, 9), y2 = c(4, 5, 6, 7))
d2 <- data.frame(y1 = c(3, 2, 1, 6), y2 = c(6, 5, 4, 4))
d3 <- data.frame(y1 = c(3, 2), y2 = c(6, 5))
d4 <- data.frame(y1 = c(3, 2), y2 = c(6, 5))
listdfs <- list(d1, d2, d3, d4)


listdfs2<-lapply(listdfs,function(x) if(nrow<10<-NULL)))

Так что в основном d1и 2 следует сохранить.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 17 октября 2019

Это можно сделать с помощью Filter, т.е.

Filter(function(i) nrow(i) > 3, listdfs)

[[1]]
  y1 y2
1  1  4
2  2  5
3  3  6
4  9  7

[[2]]
  y1 y2
1  3  6
2  2  5
3  1  4
4  6  4
2 голосов
/ 17 октября 2019

Другой вариант - использовать discard из purrr

purrr::discard(listdfs, ~ nrow(.) < 3)

[[1]]
  y1 y2
1  1  4
2  2  5
3  3  6
4  9  7

[[2]]
  y1 y2
1  3  6
2  2  5
3  1  4
4  6  4

2 голосов
/ 17 октября 2019

Вы можете сделать:

listdfs[lapply(listdfs, nrow) > 3]

[[1]]
  y1 y2
1  1  4
2  2  5
3  3  6
4  9  7

[[2]]
  y1 y2
1  3  6
2  2  5
3  1  4
4  6  4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...