R:通过删除和添加循环变量来迭代向量
考虑一个向量:R:通过删除和添加循环变量来迭代向量,r,vector,R,Vector,考虑一个向量: dim如果您正在查找dim的所有组合,可以从combinat软件包中查看功能combn: combinat::combn(letters[1:4], 1, simplify = F) [[1]] [1] "a" [[2]] [1] "b" [[3]] [1] "c" [[4]] [1] "d" combinat::combn(letters[1:4], 2, simplify = F) combinat::combn(letters[1:4], 3, simpl
dim如果您正在查找dim
的所有组合,可以从combinat
软件包中查看功能combn
:
combinat::combn(letters[1:4], 1, simplify = F)
[[1]]
[1] "a"
[[2]]
[1] "b"
[[3]]
[1] "c"
[[4]]
[1] "d"
combinat::combn(letters[1:4], 2, simplify = F)
combinat::combn(letters[1:4], 3, simplify = F)
combinat::combn(letters[1:4], 4, simplify = F)
在baseR
中,我将使用for
-循环、sapply
或lappy
用于
-循环
for (i in seq_along(dim)) {
print(dim[-i])
}
[1] "b" "c" "d"
[1] "a" "c" "d"
[1] "a" "b" "d"
[1] "a" "b" "c"
sapply
t( sapply(seq_along(dim), function(i) dim[-i]) )
[,1] [,2] [,3]
[1,] "b" "c" "d"
[2,] "a" "c" "d"
[3,] "a" "b" "d"
[4,] "a" "b" "c"
lapply(seq_along(dim), function(i) dim[-i])
[[1]]
[1] "b" "c" "d"
[[2]]
[1] "a" "c" "d"
[[3]]
[1] "a" "b" "d"
[[4]]
[1] "a" "b" "c"
lappy
t( sapply(seq_along(dim), function(i) dim[-i]) )
[,1] [,2] [,3]
[1,] "b" "c" "d"
[2,] "a" "c" "d"
[3,] "a" "b" "d"
[4,] "a" "b" "c"
lapply(seq_along(dim), function(i) dim[-i])
[[1]]
[1] "b" "c" "d"
[[2]]
[1] "a" "c" "d"
[[3]]
[1] "a" "b" "d"
[[4]]
[1] "a" "b" "c"
您可以通过以下方式获得:
dim <- c("a", "b", "c", "d")
> Map(combn, list(dim), 1:length(dim))
[[1]] # All combinations of size 1
[,1] [,2] [,3] [,4]
[1,] "a" "b" "c" "d"
[[2]] # All combinations of size 2
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a" "a" "a" "b" "b" "c"
[2,] "b" "c" "d" "c" "d" "d"
[[3]] # All combinations of size 3
[,1] [,2] [,3] [,4]
[1,] "a" "a" "a" "b"
[2,] "b" "b" "c" "c"
[3,] "c" "d" "d" "d"
[[4]] # All combinations of size 4
[,1]
[1,] "a"
[2,] "b"
[3,] "c"
[4,] "d"
尺寸图(梳,列表(尺寸),1:长度(尺寸))
[[1]]#大小为1的所有组合
[,1] [,2] [,3] [,4]
[1,]a“b”c“d”
[[2]]#大小为2的所有组合
[,1] [,2] [,3] [,4] [,5] [,6]
[1,]a“a”a“b”b“c”
[2,][b”“c”“d”“c”“d”“d”
[[3]]#所有大小为3的组合
[,1] [,2] [,3] [,4]
[1,]a“a”a“b”
[2,]b“b”c“c”
[3,]“c”“d”“d”
[[4]]#所有大小为4的组合
[,1]
[1,]“a”
[2,]“b”
[3,]“c”
[4,]“d”
您是否在寻找c(“a”、“b”、“c”、“d”)的所有排列方式
?是的!我相信所以我想你可能指的是所有的子集:或者?是的,我指的是所有的子集。但是这些问题产生了幂集而不是子集幂集是所有子集的集合,对吗?如果您只需要严格的子集,第二个链接中的James answer可以进行调整,如lappy(1:(长度(dim)-1),function(x)combn(dim,x))
我不关心顺序,我不希望重复相同的4个元素。我想要像[[1]][1]“a”“b”[[2]][1]“a”“b”“c”代码>好的,我明白了,您正在寻找组合:)。我编辑了我的答案