gpt4 book ai didi

r - 回溯一棵树的两列数据的父项/路径

转载 作者:行者123 更新时间:2023-12-03 19:14:24 27 4
gpt4 key购买 nike

我有一个树数据序列化如下:
关系:P到C是“一对多”,C到P是“一对一”。所以列 P 可能有重复的值,但列 C 有唯一的值。

P, C
1, 2
1, 3
3, 4
2, 5
4, 6
# in data.frame
df <- data.frame(P=c(1,1,3,2,4), C=c(2,3,4,5,6))

1.如何高效实现一个功能func所以:
func(df, val)返回根的完整路径向量(在本例中为 1)。

例如:
func(df, 3) returns c(1,2,3)
func(df, 5) returns c(1,2,5)
func(df, 6) returns c(1,3,4,6)

2. 或者,快速转换df像这样的查找表也适用于我:
C, Paths
2, c(1,2)
3, c(1,3)
4, c(1,3,4)
5, c(1,2,5)
6, c(1,2,4,6)

最佳答案

这是使用 igraph 的解决方案

library(igraph)
g <- graph_from_data_frame(df)
df <- within(df,
Path <- sapply(match(as.character(C),names(V(g))),
function(k) toString(names(unlist(all_simple_paths(g,1,k))))))

以至于
> df
P C Path
1 1 2 1, 2
2 1 3 1, 3
3 3 4 1, 3, 4
4 2 5 1, 2, 5
5 4 6 1, 3, 4, 6

关于r - 回溯一棵树的两列数据的父项/路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61267519/

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