所有可能的两个向量的组合,同时保持R中的顺序

我有一个矢量,说vec1,另一个矢量vec2如下:
vec1 = c(4,1)
# [1] 4 1

vec2 = c(5,3,2)
# [1] 5 3 2

我正在寻找的是vec1和vec2的所有可能的组合,同时保持向量元素的顺序.也就是说,得到的矩阵应该是这样的:@H_301_5@

> res
      [,1] [,2] [,3] [,4] [,5]
 [1,]    4    1    5    3    2
 [2,]    4    5    1    3    2
 [3,]    4    5    3    1    2
 [4,]    4    5    3    2    1
 [5,]    5    4    1    3    2
 [6,]    5    4    3    1    2
 [7,]    5    4    3    2    1
 [8,]    5    3    4    1    2
 [9,]    5    3    4    2    1
[10,]    5    3    2    4    1

# res=structure(c(4,4,5,1,# 3,2,# 2,1),.Dim = c(10L,5L))

两个向量不允许重复.也就是说,所得到的矩阵的所有行都具有唯一的元素.@H_301_5@

我实际上正在寻找最有效的方式.解决这个问题的一种方法生成长度为n的所有可能的排列(n = 5),然后应用过滤.但是,随着n的增长,它是耗时的.@H_301_5@

有没有办法做到这一点?@H_301_5@

解决方法

尝试这个:
nv1 <- length(vec1)
nv2 <- length(vec2)
n <- nv1 + nv2

result <- combn(n,nv1,function(v) {z=integer(n);z[v]=vec1;z[-v]=vec2;z})

这个想法是产生所有组合的索引,以便放置vec1的元素.@H_301_5@

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...