Si solo desea distribuciones de títulos, es probable que no necesite un paquete de gráficos en absoluto. Recomiendo los bigtablulate package de modo que los
- sus objetos R están respaldados archivo de modo que usted no está limitado por la memoria RAM
- se puede paralelizar el cálculo grado usando
foreach
Salida their website para más detalles . Para dar un ejemplo rápido de este enfoque, primero creemos un ejemplo con un edgelist que involucre 1 millón de bordes entre 1 millón de nodos.
set.seed(1)
N <- 1e6
M <- 1e6
edgelist <- cbind(sample(1:N,M,replace=TRUE),
sample(1:N,M,replace=TRUE))
colnames(edgelist) <- c("sender","receiver")
write.table(edgelist,file="edgelist-small.csv",sep=",",
row.names=FALSE,col.names=FALSE)
I junto concatenar este archivo 10 veces para que el ejemplo sea un poco más grande.
system("
for i in $(seq 1 10)
do
cat edgelist-small.csv >> edgelist.csv
done")
A continuación se carga el paquete de bigtabulate
y leer en el archivo de texto con nuestra edgelist. El comando read.big.matrix()
crea un objeto de archivo respaldados en R.
library(bigtabulate)
x <- read.big.matrix("edgelist.csv", header = FALSE,
type = "integer",sep = ",",
backingfile = "edgelist.bin",
descriptor = "edgelist.desc")
nrow(x) # 1e7 as expected
Podemos calcular los outdegrees utilizando bigtable()
en la primera columna.
outdegree <- bigtable(x,1)
head(outdegree)
comprobación de validez rápida para asegurarse de que la tabla está funcionando como se esperaba:
# Check table worked as expected for first "node"
j <- as.numeric(names(outdegree[1])) # get name of first node
all.equal(as.numeric(outdegree[1]), # outdegree's answer
sum(x[,1]==j)) # manual outdegree count
Para obtener grado de entrada, acaba de hacer bigtable(x,2)
.
Cuando dices "analizar", ¿puedes ser más específico en cuanto a lo que intentas hacer? – ose
Por supuesto. Quiero calcular los grados (entrada, salida, total) que usaré para trazar distribuciones. Quiero poder mover nodos y bordes del gráfico grande a gráficos más pequeños (procesos de muestreo), donde add.vertices y add.edges del igraph son muy útiles. –
¿Cuál es el formato de los datos? ¿Es el edgelist solo 60 gb? (es decir, ¿es un archivo de texto donde cada fila contiene dos números que representan el remitente y el destinatario de un solo borde?) –