2

1、3、4 という名前の 3 つのデータフレームを含むリストがあるとします。

        1                   3           4  
1   A   c(2, 1, 3, 1, 2)    c(1, 1, 2)  c(1, 1)
2   B   c(1, 1, 1, 3, 2)    c(2, 1, 2)  c(2, 1)

データフレームにはすべて同じ列 (A と B) がありますが、ご覧のとおり、行数が異なります。リスト内のすべてのデータフレームの列 B の値が 2 未満の行を消去するにはどうすればよいですか?

私はラップリーを試しました:

list <- lapply(list, function(x) {x <- any(x[,c(2)] < 2);x})
4

2 に答える 2

3

の賢明な使用lapply()と単純なサブセット化は、どのアプローチよりも優れています。でのデータの使用l:

l <- list("1" = data.frame(A = c(2, 1, 3, 1, 2), B = c(1, 1, 1, 3, 2)),
          "3" = data.frame(A = c(1,1,2), B = c(2,1,2)),
          "4" = data.frame(A = c(1,1), B = c(2,1)))

これはあなたが望むことをします

lapply(l, function(x) x[x$B >= 2,])

与える:

> lapply(l, function(x) x[x$B >= 2,])
$`1`
  A B
4 1 3
5 2 2

$`3`
  A B
1 1 2
3 2 2

$`4`
  A B
1 1 2
于 2011-08-10T15:16:33.393 に答える
1

このようなものはどうですか:

lst <- lapply(lst, function(x) {subset(x, B >= 2)})
于 2011-08-10T15:12:11.267 に答える