我正在處理一大組組合。我想要一種方法來消除它們中的一部分,從而消除元素靠近在一起的所有組合(其中,由我設定的靠近)。 (請注意,它可能需要一兩秒鐘,這是相當大的)。r檢查行元素是否在界限內
讓我們做出了榜樣:
library(gtools)
support<-matrix(seq(0,1,by=0.1), ncol=1)
support.n<-as.matrix(permutations(length(support), 3,support))
但現在我想消除所有行,任何2名的組合是「關閉」(比如內的對方,包容+/- 0.2)。也就是說,我怎麼轉換:
...
[964,] 1.0 0.7 0.0
[965,] 1.0 0.7 0.1
[966,] 1.0 0.7 0.2
[967,] 1.0 0.7 0.3
[968,] 1.0 0.7 0.4
[969,] 1.0 0.7 0.5
[970,] 1.0 0.7 0.6
[971,] 1.0 0.7 0.8
[972,] 1.0 0.7 0.9
[973,] 1.0 0.8 0.0
[974,] 1.0 0.8 0.1
[975,] 1.0 0.8 0.2
[976,] 1.0 0.8 0.3
[977,] 1.0 0.8 0.4
[978,] 1.0 0.8 0.5
[979,] 1.0 0.8 0.6
[980,] 1.0 0.8 0.7
[981,] 1.0 0.8 0.9
[982,] 1.0 0.9 0.0
[983,] 1.0 0.9 0.1
[984,] 1.0 0.9 0.2
[985,] 1.0 0.9 0.3
[986,] 1.0 0.9 0.4
[987,] 1.0 0.9 0.5
[988,] 1.0 0.9 0.6
[989,] 1.0 0.9 0.7
[990,] 1.0 0.9 0.8
到薄得多:
....
[964,] 1.0 0.7 0.0
[965,] 1.0 0.7 0.1
[966,] 1.0 0.7 0.2
[967,] 1.0 0.7 0.3
[968,] 1.0 0.7 0.4
[969,] 1.0 0.7 0.5
其中行名稱是不正確的,因爲我沒有計算出發生了什麼給他們。 我一直在看任何(x)的命令,以及一些各種哪些()類型的命令,但似乎無法得到發生的魔法。
一段時間的測試後,我發現codoremifia的答案的運行速度比尼爾·富爾茨的回答快幾乎25%(十秒)。我覺得這很了不起,因爲它包含了一些額外的命令,我認爲它們會變慢。有人知道爲什麼 – RegressForward