【发布时间】:2020-10-02 17:15:04
【问题描述】:
我是 R 新手,需要一些帮助来编写正确的代码。
我想生成 Erdos Renyi 随机图并计算图的聚类系数。
这个模型的随机图将有 n 个顶点(在我的例子中,n = 5)。并且2个顶点之间是否存在边由概率p确定。我有一个包含多行和多列的大型 csv 文件,其中一列包含我要使用的概率值。
对于每个概率值,我想编写 R 来读取它并生成 100 个随机图并获得 100 个随机图的邻接矩阵。
我可以使用此代码使用特定概率值 (p=0.39) 获得 100 个图的邻接矩阵
adjacency <- replicate(100,get.adjacency(erdos.renyi.game(5,0.39,type="gnp"),sparse = FALSE))
我正在尝试找到一种方法让 R 遍历我的 csv 文件并使用名为“ProbabilityValue”的列中的每一行作为概率值。
这是我目前所拥有的
for (i in 1:nrow(data)){
all.adjacency[i] <-
replicate(100,get.adjacency(erdos.renyi.game(5,data[i,"ProbabilityValue"],type="gnp"), sparse = FALSE))
}
但我收到一条警告消息,提示“要替换的项目数不是替换长度的倍数”,并且输出全为零。
为了获得聚类,我安装了DirectedClustering 包,它接受邻接矩阵并将聚类作为输出。该函数称为ClustBCG()。
我以adjacency 作为输入运行这行代码以获取聚类
ClustBCG(adjacency,"undirected")
我收到一条错误消息,提示 adjacency 不是有效的矩阵对象。我知道将“邻接”作为输入是不正确的,但我不知道有任何其他输入方式。
对于“ProbabilityValue”列中的每个概率值,我想获取 100 个随机生成的图的邻接矩阵。然后将 100 个邻接矩阵中的每一个读入函数ClustBCG(),得到 100 个聚类值作为输出。但我不确定从哪里开始。您能否帮助我或指导我在 R 中使用适当的功能?
(我很抱歉问了一个很长的问题,但我很迷茫)
非常感谢任何帮助
谢谢
【问题讨论】:
标签: r loops for-loop matrix graph