我正在构建一个R包来与RESTful MediaWiki API进行交互。在编写函数以提取一篇文章的所有链接的图形时,我必须操纵一个非常大的(500行和500列)数据帧。这样做,R很慢,对于一篇文章(例如“民族主义”文章),所有过程需要20个小时。
你能推荐一些东西来加快速度吗? 为了更准确地解释一下,我给你了我的包的“createGraph”函数的代码:
#' Make the graph of the links of one page
#'
#' @param title the title of a page
#' @param domain the wiki of a page
#' @return A graph object
#' @import igraph
#' @export
#'
createGraph <- function(titre,domaine,namespace,contributors=F) {
print(paste("Téléchargement des liens de l'article",titre,sep=" "))
listLinks<-links(titre,domaine,namespace)
print("Construction de la matrice d'adjacence du graphe")
data<-data.frame(matrix("0",ncol = nrow(listLinks),nrow = nrow(listLinks)),row.names=listLinks$titre,stringsAsFactors=FALSE)
for(i in 1:nrow(data)) {
for(j in 1:ncol(data)) {
data[i,j]<-isLink(listLinks$titre[i],listLinks$titre[j],domaine)
}
print(paste(i/nrow(data)-1,"%",sep=" "))
}
newRow<-rep(1,ncol(data))
data<-rbind(data,newRow)
rownames(data)[nrow(data)]<-titre
data[,ncol(data)+1]<-1
data[nrow(data),ncol(data)]<-isLink(titre,titre,domaine)
names(data)<-c(listLinks$titre,titre)
graph_from_adjacency_matrix(data)
graph<-graph_from_adjacency_matrix(as.matrix(data),c("directed"))
print("100 %")
}