R得到每个十年中至少有一个数字的所有行,从0到99

时间:2017-06-07 12:54:22

标签: r

具有以下矩阵:

     [,1] [,2] [,3] [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]  [,11]  [,12] 
[1,]   23   14   17   10     2     6    90    45    56     25     11      9 
[2,]    1   15   18   21    32    46    55    50    61     73     81     93 
[3,]   56   19   98   23    42     7     8    25    61     54     22     38 

我想只获得从10到10的每10年至少有一个数字的行  所以结果必须是:

[1] False
[2] True
[3] False

最后我们只得到满足条件的[2]。你能提供一个可以产生这个结果的R语言函数吗?

此致 迪米瑞斯

2 个答案:

答案 0 :(得分:3)

我们可以做到

apply(m1, 1, function(x) length(unique(x %/%10))==10)
#[1] FALSE  TRUE FALSE

数据

m1 <- structure(c(23, 1, 6, 14, 15, 19, 17, 18, 98, 10, 21, 23, 2, 
32, 42, 6, 46, 7, 90, 35, 8, 45, 50, 25, 56, 61, 61, 25, 73, 
54, 11, 81, 22, 9, 93, 38), .Dim = c(3L, 12L))

答案 1 :(得分:3)

另一种方法是使用setqual函数在使用整数除法运算符%/%之后检查几十年(0:9)与行内容的集合相等。

apply(m1, 1, function(x) setequal(0:9, x %/%10))
[1] FALSE  TRUE FALSE