gpt4 book ai didi

r - 识别链接在一起的链接剧集组

转载 作者:行者123 更新时间:2023-12-04 17:24:32 25 4
gpt4 key购买 nike

以这个简单的链接 id 数据框为例:

test <- data.frame(id1=c(10,10,1,1,24,8),id2=c(1,36,24,45,300,11))

> test
id1 id2
1 10 1
2 10 36
3 1 24
4 1 45
5 24 300
6 8 11

我现在想将所有链接的 id 组合在一起。
通过“链接”,我的意思是遵循链接链,以便一组中的所有 id
被标记在一起。一种分支结构。 IE:
Group 1
10 --> 1, 1 --> (24,45)
24 --> 300
300 --> NULL
45 --> NULL
10 --> 36, 36 --> NULL,
Final group members: 10,1,24,36,45,300

Group 2
8 --> 11
11 --> NULL
Final group members: 8,11

现在我大致知道我想要的逻辑,但不知道如何优雅地实现它。我正在考虑递归使用 match%in%沿着每个分支走下去,但这次我真的很难过。

我要追求的最终结果是:
result <- data.frame(group=c(1,1,1,1,1,1,2,2),id=c(10,1,24,36,45,300,8,11))

> result
group id
1 1 10
2 1 1
3 1 24
4 1 36
5 1 45
6 1 300
7 2 8
8 2 11

最佳答案

Bioconductor 封装 RBGL (BOOST 图形库的 R 接口(interface))包含
一个函数,connectedComp() ,它标识了图中的连通分量——
正是你想要的。

(要使用该功能,您首先需要安装 图形 RBGL 软件包,可用 herehere 。)

library(RBGL)
test <- data.frame(id1=c(10,10,1,1,24,8),id2=c(1,36,24,45,300,11))

## Convert your 'from-to' data to a 'node and edge-list' representation
## used by the 'graph' & 'RBGL' packages
g <- ftM2graphNEL(as.matrix(test))

## Extract the connected components
cc <- connectedComp(g)

## Massage results into the format you're after
ld <- lapply(seq_along(cc),
function(i) data.frame(group = names(cc)[i], id = cc[[i]]))
do.call(rbind, ld)
# group id
# 1 1 10
# 2 1 1
# 3 1 24
# 4 1 36
# 5 1 45
# 6 1 300
# 7 2 8
# 8 2 11

关于r - 识别链接在一起的链接剧集组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com