首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从2个向量创建所有可能的组合

从2个向量创建所有可能的组合
EN

Stack Overflow用户
提问于 2019-04-12 22:38:55
回答 2查看 54关注 0票数 1

我有一个txt文件,其中包含一个邻居列表,结构如下:

代码语言:javascript
运行
复制
UG   Neigh
6    7
6    504
6    508
6    514
9    11
9    14
10   352

...  ...

我需要为每个UG创建一个所有可能的Neigh组合的列表。示例:

代码语言:javascript
运行
复制
6-7
6-504
6-508
6-514
6-7-504
6-7-508
6-7-514
6-504-508
6-504-514
6-508-514
6-7-504-508
9-11
9-14
9-11-14
...
EN

回答 2

Stack Overflow用户

发布于 2019-04-12 22:39:53

我们可以使用expand.grid

代码语言:javascript
运行
复制
do.call(paste, c(expand.grid(df1), sep="-"))
票数 3
EN

Stack Overflow用户

发布于 2019-04-12 22:49:35

您可以通过使用data.table包中的CJ函数来完成此操作-

代码语言:javascript
运行
复制
library(data.table)
dt <- CJ(UG = dt$UG, Neigh = dt$Neigh, unique = TRUE)
setDT(dt)[, final:=paste0(UG,"-",Neigh)]

示例数据-

代码语言:javascript
运行
复制
dt <- read.table(text="UG   Neigh
6    7
6    504
6    508
6    514
9    11
9    14
10   352",header=T)

输出-

代码语言:javascript
运行
复制
    UG Neigh  final
 1:  6     7    6-7
 2:  6    11   6-11
 3:  6    14   6-14
 4:  6   352  6-352
 5:  6   504  6-504
 6:  6   508  6-508
 7:  6   514  6-514
 8:  9     7    9-7
 9:  9    11   9-11
10:  9    14   9-14
11:  9   352  9-352
12:  9   504  9-504
13:  9   508  9-508
14:  9   514  9-514
15: 10     7   10-7
16: 10    11  10-11
17: 10    14  10-14
18: 10   352 10-352
19: 10   504 10-504
20: 10   508 10-508
21: 10   514 10-514

注释-您还可以使用unique参数指定唯一的组合。

您还可以使用tidyr包中的crossing

代码语言:javascript
运行
复制
> do.call(paste,crossing(dt$UG, dt$Neigh, sep="-"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55654092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档