【发布时间】:2013-03-12 15:00:54
【问题描述】:
我希望能够从列表中引用一个函数。 使用此代码,我想自动导出具有不同布局的图形。我正在使用 igraph 库。
问题是我得到的是函数的文本而不是函数的引用。
您能否提供一些代码更改来完成这项工作?
library(igraph)
g2 <- barabasi.game(100)
layouts = list(layout.auto,
layout.random,
layout.circle,
layout.sphere,
layout.fruchterman.reingold,
layout.kamada.kawai,
layout.spring,
layout.reingold.tilford,
layout.fruchterman.reingold.grid,
layout.lgl,
layout.graphopt,
layout.svd,
layout.norm)
for(i in layouts) {
plot.igraph(g, layout=i, vertex.label=NA, vertex.size=3, edge.color="darkblue", edge.lty=3)
dev.copy(png,paste("figures/network_v0.1_",substitute(i),".png",sep=""))
dev.off()
}
【问题讨论】:
-
您是否尝试使用
c("..", "...")将layouts设置为vector? -
将函数名称保存在列表中是一种可接受的解决方案,然后如何调用名称为“fun1”的函数?
-
它可以与 get() 一起使用吗?让我试试:D
-
您应该为图形
g的每个布局构造一个layout矩阵。如果它们都具有相似的参数,那么您可以执行以下操作:do.call(get(layouts[i]), g, ...)其中layouts是一个向量,...是您要传递的其余参数。 -
如果你提供
g,我也许可以进行更多实验(总是提供可重复的示例)。