我正在使用 R 处理 Twitter 数据。我拥有的是一个 .csv 文件,其中包含 365 个用户的关注者 ID。我正在尝试将此数据转换为边缘列表,最后使用 igraph 包导出 .graphml 或 Pajek 文件以进行网络分析。
.csv 文件包含 365 行。我查找的每个用户一行。每行的第一列包含用户 ID,以下列包含用户朋友(他/她关注的人)的 ID。我对这 365 个用户之间的网络感兴趣。为此,我必须过滤掉所有其他用户。
问题是 R 似乎破坏了所有大于 714 列的行(没有任何错误消息)。当我读入 csv 文件 (read.csv) 时,数据框包含 456 行(它应该包含 365)和 714 列(它应该包含超过 12500,因为一个用户有这么多朋友)。
我没有找到关于 R 中列限制的任何信息。我发现的所有信息都与内存限制有关。所以这是我的问题
有没有办法告诉 R 不要破坏列,或者允许这么多列?
哪种方式是格式化这些数据的最佳方式?我想这么多列不是最好的主意吗?
这是我的代码。它正在工作,但由于行数超过了应有的行数,因此节点数也超过了应有的数
friends=read.csv("friends.csv",header=FALSE,check.names=FALSE,sep=";")
dim(friends)
#node list
i <- 1#zähler für zeilen
from <- NULL #
to <- NULL
while(i<=nrow(friends)){#startet bei der ersten Zeile in friends datei
a <- as.array(intersect(friends[i,2:ncol(friends)], friends[,1]))
for(l in a){
from <- c(from,friends[i,1])
to <- c(to,l)
}
i=i+1
}
raWnet=data.frame(from,to)
#PRODUCE GRAPH
library(igraph)
el=as.matrix(raWnet) # coerces the data into a two-column matrix format that igraph likes
el[,1]=as.character(el[,1])
el[,2]=as.character(el[,2])
net=graph.edgelist(el,directed=TRUE)
write.graph(net, file="atpoltwit.graphml", format="graphml")
write.graph(net, file="atpoltwit.NET", format="pajek")