【发布时间】:2014-03-05 12:06:21
【问题描述】:
我有许多通过网络链接的代理,现在我正在尝试随机抽取链接代理对。最终结果应该是一个二进制矩阵(ncol = nrow = 代理数)。每个代理在链接对中只能出现一次。
这是我到目前为止所做的。首先我画随机对
library(sna,dummies)
pairs = matrix(sample(1:10,10,replace=F), ncol=2)
然后我将其转换为矩阵
meet = cbind(merge(c(1:10), pairs, by.x = 1, by.y = 1, all.x = TRUE),
merge(c(1:10), pairs, by.x = 1, by.y = 2, all.x = TRUE))
meet[,2] = ifelse(is.na(meet[,2]), meet[,4], meet[,2])
meet = meet[,-c(3,4)]
meet = data.matrix(dummy.data.frame(meet, names = "V2"))
meet = meet[,-1]
colnames(meet) = c(1:10)
假设代理通过以下网络链接
nw = rgraph(10, mode = "graph", tprob = 0.5)
如果我将 meet 和 nw 相乘,我会通过消除未链接的代理对得到一个随机抽取的对矩阵。但是,在这种情况下,我最终得到的对数非常少......
有没有办法以代理之间的链接为条件绘制对?
【问题讨论】:
-
你能随机抽取(唯一)代理的样本,然后为每个代理查找链接代理吗?或者您是否要求每个代理最多以一对链接的形式出现?
-
后者 - 每个代理可能只出现一对。感谢您指出,我将编辑问题。
-
好吧,我不熟悉这里的包,但是如果你可以使用一些工具来生成一个列表对象,其中每个列表元素包含给定代理的所有链接,那么一旦你选择了一个代理,您可以随机选择一个链接代理,然后从两个代理的列表元素中删除这些链接值。 (希望这是有道理的)
标签: r social-networking sample