我有一些我将在igraph中使用的数据。每个样本有两个数据帧:一个包含链接列表,另一个包含节点列表。 Igraph使用这些数据帧来生成网络,例如:
net1 <- graph_from_data_frame(d=sample1links, vertices=sample1nodes)
其中sample1links
和sample1nodes
是不同的数据框。
我有很多不同的样本,所以如果我可以自动化这个过程会很好。是否有一种方法我可以使用上述过程来生成样本的所有网络(即net1-netn,其中n是样本数)?
非常感谢能帮助的人!!
答案 0 :(得分:2)
以下是一个例子:
library(igraph)
# 2 example graphs as data frames
sample1nodes <- read.table(text = "a\nb\n\nc\nd\ne")
sample1links <- read.table(text = "a c\n\nb c\nc d")
sample2nodes <- read.table(text = "A\nB\n\nc\nd\ne")
sample2links <- read.table(text = "A c\n\nB c\nc d")
# create igraph objects from data frames in a list
glst <- Map(graph_from_data_frame, d=mget(ls(pattern = "sample\\d+links")), vertices=mget(ls(pattern = "sample\\d+nodes")))
names(glst) <- paste0("net", sub("sample(\\d+)links", "\\1", names(glst))) # rename list objects
# Store list elements in the global environment under their names
list2env(glst, envir = .GlobalEnv)
# plot
par(mfrow = c(1,2))
plot(net1)
plot(net2)