首页 > 解决方案 > 我如何在 R 中通过 2 列找到连接值

问题描述

我有一个包含 2 列的数据集。我需要找到dt$source == "learn4 R 中连接的单词。

输出是一个向量 c("learn2", "learn1", "learn")

首先我们 "learn4"连接到"learn2",然后 "learn2"连接到"learn1",然后 "learn1连接到"learn"

我想不出任何办法来解决这个问题。有什么建议吗?

dt <- data.frame(source = c("learn","learn1", "disc","learn2","learn3","disc1","lb","learn4"),
                 new = c("learn","learn","disc","learn1","learn1","disc","lb","learn2"))
 dt
  source   new
1  learn  learn
2 learn1  learn
3   disc   disc
4 learn2 learn1
5 learn3 learn1
6  disc1   disc
7     lb     lb
8 learn4 learn2

标签: r

解决方案


如何创建图表。

library(igraph)
my.graph <- graph.data.frame(dt)
plot(my.graph) #not necessary, but have a look

现在您可以使用以下命令找到特定节点的所有邻居ego

names(ego(my.graph, length(V(my.graph)), "learn4")[[1]])
[1] "learn4" "learn2" "learn1" "learn"  "learn3"

请注意,您说您请求的输出不包括learn3,但learn1连接到learn3第 5 行。

一种解决方案可能是mode = "out"按照@thelatemail 的建议在评论中包含:

names(ego(my.graph, length(V(my.graph)), "learn4", mode="out")[[1]])
[1] "learn4" "learn2" "learn1" "learn" 

推荐阅读