具有以下矩阵:
[,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语言函数吗?
此致 迪米瑞斯
答案 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