过滤具有特定行和列的表

时间:2011-06-23 02:43:52

标签: r

我有几百个2 * 2表,如下所示:

$`345`
   N S
N 10 7
K  3 3

$`359`
  N S
P 7 4
S 2 2

但我只需要选择行和列号中包含“N”的表格。我怎么能这样做,ifelse不起作用......

1 个答案:

答案 0 :(得分:4)

你可以通过以下方式完成这项工作:

> n <- c("M", "N", "O")
> # create a sample data set
> m <- lapply(1:10, function(i)matrix(sample(4), 2, 2, dimnames=list(n[sample(3,2)], n[sample(3,2)])))
> names(m) <- paste(1:10)
> # looks like this
> m
$`1`
  N M
O 1 3
M 2 4

... snip ...

$`10`
  M O
M 1 3
N 4 2

> 
> # filter it
> r <- Filter(function(x) all(sapply(dimnames(x), function(x)"N" %in% x)), m)
> r
$`2`
  M N
O 4 2
N 1 3

$`4`
  O N
N 1 3
O 2 4

$`5`
  M N
N 4 3
O 1 2

$`7`
  M N
O 4 1
N 3 2