【发布时间】:2019-03-02 05:54:22
【问题描述】:
我在 R 中从我的数据集(10 列的数据表)创建有向图(使用 igraph 包)时遇到问题。任务如下:我需要构建一个有向(网络)图,其中如果 X 邀请 Y 到平台,则个人 X 连接到个人 Y。最终,我需要确定网络最长链的大小并计算聚类系数。
过滤我的dt后,dt.user由以下2列组成:user_id,invitationer_id。
user_id: user identification
inviter_id: id of the user that invited this user to the platform
在清理数据(删除所有 NA 值)后,我正在尝试完成这项工作,但我不确定我是否以正确的方式进行操作,因为我的聚类系数为 0(这似乎不太可能):
all.users <- dt.users[, list(inviter_id, user_id)]
g.invites.network <- graph.data.frame(all.users, directed = TRUE)
我已经尝试切换连接的方向,但在直径和聚类系数方面我仍然得到相同的结果:
all.users <- dt.users[, list(user_id, inviter_id)]
我的问题是,我的有向图错了吗?如果是这样,我做错了什么?我相信我的答案是错误的,因为聚类系数为 0。对我来说,在这个网络中似乎根本不可能形成任何聚类。我应该保留...list(inviter_id), user_id 而不是...list(user_id, inviter_id)?
样本数据(40 行):
dt.users <- data.table::data.table(
inviter_id = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 23L, 22L, 31L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 63L, 4L, 4L, 4L),
user_id = c(17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 32L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 58L, 59L, 60L, 64L, 71L, 75L, 76L, 78L)
)
任何帮助将不胜感激!
【问题讨论】:
-
请提供一个可重现的最小示例。
-
我试过了!现在好吗?如果没有,请告诉我(对不起,我的 R 经验很少)
标签: r network-programming igraph directed-graph