¿cómo podría incluso representar una lista de adyacencia en R? necesita listas de tamaño variable para el conjunto de nodos adyacentes; entonces debes usar una lista(); pero, ¿de qué sirve tenerlo en R?
puedo pensar en trucos incoherentes con funciones similares pero hacen un escaneo lineal para cada nodo. pero jugando durante 1 minuto, aquí está: una lista de emparejamientos, donde el segundo elemento de cada par es la lista de adyacencia. la salida es más loca de lo que realmente es la estructura dats.
> edgelist=data.frame(A=c(1,1,2,2,2),B=c(1,2,2,3,4))
> library(plyr)
> llply(1:max(edgelist), function(a) list(node=a, adjacents=as.list(edgelist$B[edgelist$A==a])))
[[1]]
[[1]]$node
[1] 1
[[1]]$adjacents
[[1]]$adjacents[[1]]
[1] 1
[[1]]$adjacents[[2]]
[1] 2
[[2]]
[[2]]$node
[1] 2
[[2]]$adjacents
[[2]]$adjacents[[1]]
[1] 2
[[2]]$adjacents[[2]]
[1] 3
[[2]]$adjacents[[3]]
[1] 4
[[3]]
[[3]]$node
[1] 3
[[3]]$adjacents
list()
[[4]]
[[4]]$node
[1] 4
[[4]]$adjacents
list()
Guh. Sí. Ese es un delineador perfecto. Por extraño que parezca, mi solución for loop se ejecuta dos veces más rápido que por(). –
de hecho no es muy rápido cuando su tabla tiene 50,000 de largo (con ~ 5000 identificadores). ¿Hay alternativas más rápidas? –