首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从i图中的自我网络列表中计算指定顶点in的传递性

从i图中的自我网络列表中计算指定顶点in的传递性
EN

Stack Overflow用户
提问于 2015-01-16 10:54:05
回答 1查看 872关注 0票数 0

我需要计算1.5深度的大量以自我为中心的网络的局部聚类系数。所有的文件都是以自我命名的编辑者,并且存储在'edgelist‘文件夹中。下面是批量导入它的代码:

代码语言:javascript
复制
datanames <- as.character(lapply(list.files("./edgelists"), FUN = function(x) strsplit(x, split="\\.")[[1]][1]))
dataset <- lapply(datanames, function(x) list(assign(x, read.table(paste("./edgelists/", x, ".csv", sep=""), header=TRUE, sep=","))))
graphs <- lapply(dataset, function(dataset) graph.data.frame(dataset, directed=F, vertices=NULL))

现在我只需要计算自我的传递性,它的名字存储在'datanames‘中的chr中。

似乎我不能使用这个变量作为vids参数的值,1)既不能直接使用,2)也不能在此函数中转换为数值、双整数和整数之后。

代码语言:javascript
复制
trans <- lapply(graphs, function(graph) transitivity(graph, type = "local", vids=datanames))

因为在第一种情况下,它返回以下错误:

代码语言:javascript
复制
1) Error in as.igraph.vs(graph, vids) : Invalid vertex names 

在转换成数字类型之后,我得到:

代码语言:javascript
复制
2)  Error in .Call("R_igraph_transitivity_local_undirected", graph, vids,  : 
  At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id 

那么我该如何完成我的任务呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 09:18:10

以下是我的同事本杰明·林德提供的解决方案

代码语言:javascript
复制
all_files <- list.files("./edgelists") # reading file names
datanames <- strsplit(all_files, split = "\\.") # removing file extension
datanames <- sapply(datanames, "[[", 1) # getting names of egos

# Helper function to load data
fun1 <- function(x){
        pathname <- paste("./edgelists/", x, ".csv", sep="")
        xdf <- read.table(pathname, header = TRUE, sep=",")
        return(xdf)
}
dataset <- lapply(datanames, fun1)
# Converting data to graph objects
graphs <- lapply(dataset, graph.data.frame, directed = FALSE)
# Helper function to get vertices names of ego
egovidfun <- function(vname, vgraph){
        return(which(V(vgraph)$name == vname))
}
# Transitivity function for selected egos
newtransfun <- function(vid, vgraph){
        return(transitivity(vgraph, type = "local", vids = vid)[1])
}
# Getting vertices for egos
egovids <- egovidfun(datanames, graphs)
# Calculating transitivity for selected egos
trans <- newtransfun(egovids, graphs)`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27982387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档