r语言 - 只有连续数字的子集



我想生成{1,2,3,4}的所有子集,只有连续的数字。(例如,我想要子集{1},{1,2}或{2,3,4},但不是{2,4}。)

这是我一直在尝试的:

library(ggm)
p2<-powerset(1:4, sort = TRUE, nonempty = TRUE)
m2<-p2
for (i in 1:length(p2)){
ifelse(length(p2[[i]]) <2, m2<-m2, ifelse(max(diff(as.numeric(p2[[i]])))>1, m2<-m2[- 
c(i)],m2<-m2))
}

我想首先生成{1,2,3,4}的幂集,并排除具有不连续数字的子集。但是当我做

的时候
m2<-m2[- c(i)]

命令在第二个ifelse中排除具有不连续数字的子集,我相信我改变了幂集的索引,所以我一直得到我想要的错误子集。

关于如何正确地做有什么建议吗?

谢谢!

您可以使用以下一行代码获得R进制中1到4之间的所有唯一升序序列:

apply(which(upper.tri(diag(4), TRUE), TRUE), 1, function(x) x[1]:x[2])
#> [[1]]
#> [1] 1
#> 
#> [[2]]
#> [1] 1 2
#> 
#> [[3]]
#> [1] 2
#> 
#> [[4]]
#> [1] 1 2 3
#> 
#> [[5]]
#> [1] 2 3
#> 
#> [[6]]
#> [1] 3
#> 
#> [[7]]
#> [1] 1 2 3 4
#> 
#> [[8]]
#> [1] 2 3 4
#> 
#> [[9]]
#> [1] 3 4
#> 
#> [[10]]
#> [1] 4

最新更新