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)

在base
R
中,我将使用
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”好的,我明白了,您正在寻找组合:)。我编辑了我的答案