首页 > 解决方案 > R:通过删除和添加循环变量来迭代向量

问题描述

考虑一个向量:

dim <- c("a", "b", "c", "d")

我希望能够通过删除一些变量然后将更新的向量用于我的循环来创建向量的版本。

例如:

我希望它迭代到所有可能由此产生的向量:

    dim <- c("a", "b", "d")

等等等等。我可以在循环中执行此操作,还是以某种方式我不必指定任何内容。顺序无关紧要,所以我不想要 a,b,c 和 c,a,b

标签: rvector

解决方案


您可以通过以下方式获得:

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" 

推荐阅读