所有可能的两个向量的组合,同时保持R中的顺序
发布时间:2020-12-14 05:23:58 所属栏目:Java 来源:网络整理
导读:我有一个矢量,说vec1,另一个矢量vec2如下: vec1 = c(4,1)# [1] 4 1vec2 = c(5,3,2)# [1] 5 3 2 我正在寻找的是vec1和vec2的所有可能的组合,同时保持向量元素的顺序.也就是说,得到的矩阵应该是这样的: res [,1] [,2] [,3] [,4] [,5] [1,] 4 1 5 3 2 [2,] 4
我有一个矢量,说vec1,另一个矢量vec2如下:
vec1 = c(4,1) # [1] 4 1 vec2 = c(5,3,2) # [1] 5 3 2 我正在寻找的是vec1和vec2的所有可能的组合,同时保持向量元素的顺序.也就是说,得到的矩阵应该是这样的: > 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)) 两个向量不允许重复.也就是说,所得到的矩阵的所有行都具有唯一的元素. 我实际上正在寻找最有效的方式.解决这个问题的一种方法是生成长度为n的所有可能的排列(n = 5),然后应用过滤.但是,随着n的增长,它是耗时的. 有没有办法做到这一点? 解决方法
尝试这个:
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的元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – JasperReport报告中的Excel单元格格式
- ConcurrentHashMap 总结( 上 )
- java – SOAP Envelope响应错误:读取XMLStreamReader时出错
- jdk1.8StreamApi
- java – 使用Logback屏蔽密码?
- java – 使用Apache PDFBox添加文本时如何移动到下一行
- java – 使用content-disposition下载文件时出现问题
- java – 带有bluemix错误的spring boot:没有buildpacks检测
- java – 关于float类型的精度
- Java Swing 非常漂亮外观Nimbus的使用方法实例