我试图找出哪些简单事件的最大值和最小值之间的差异不超过10。我的代码是
sampleSpace <- combinayions(100,3,seq(1,100,by=1),repeats.allowed=FALSE)
diff <- sample_max - sample_min
有人能帮我吗?
sampleSpace
的子集,其中每行中的最大值和最小值之间的差由给出
ss <- apply(sampleSpace, 1, function(x) abs(diff(range(x))) <= 10)
所以你可以做
sampleSpace[ss,]
只获取符合该标准的行。剩下25020行。前30个是:
sampleSpace[ss,]
#> [,1] [,2] [,3]
#> [1,] 1 2 3
#> [2,] 1 2 4
#> [3,] 1 2 5
#> [4,] 1 2 6
#> [5,] 1 2 7
#> [6,] 1 2 8
#> [7,] 1 2 9
#> [8,] 1 2 10
#> [9,] 1 2 11
#> [10,] 1 3 2
#> [11,] 1 3 4
#> [12,] 1 3 5
#> [13,] 1 3 6
#> [14,] 1 3 7
#> [15,] 1 3 8
#> [16,] 1 3 9
#> [17,] 1 3 10
#> [18,] 1 3 11
#> [19,] 1 4 2
#> [20,] 1 4 3
#> [21,] 1 4 5
#> [22,] 1 4 6
#> [23,] 1 4 7
#> [24,] 1 4 8
#> [25,] 1 4 9
#> [26,] 1 4 10
#> [27,] 1 4 11
#> [28,] 1 5 2
#> [29,] 1 5 3
#> [30,] 1 5 4
您可以简单地使用which()
,如下所示:
sampleSpace = sampleSpace[which(diff <= 10), ]
head(sampleSpace)
这是输出:
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 4
[3,] 1 2 5
[4,] 1 2 6
[5,] 1 2 7
[6,] 1 2 8
我们可以从matrixStats
使用rowRanges
library(matrixStats)
m1 <- rowRanges(sampleSpace)
out <- sampleSpace[(m1[,2]- m1[,1]) <= 10,]