VとEのソースを調べましたが、それらがどのように機能するのかよくわかりません。Vのコードは次のとおりです。
> V
function (graph)
{
if (!is.igraph(graph)) {
stop("Not a graph object")
}
vc <- vcount(graph)
if (vc == 0) {
res <- numeric()
}
else {
res <- 0:(vc - 1)
}
class(res) <- "igraph.vs"
ne <- new.env()
assign("graph", graph, envir = ne)
attr(res, "env") <- ne
res
}
ここで、assignとattrの呼び出しがどのような目的で機能するのかよくわかりません。グラフを割り当てると、グラフの新しいコピーが作成されますか?これはどれくらい効率的/非効率的ですか?つまり、これにより、次のようなコードでグラフのコピーがいくつ生成されますか。
V(g)$someattr <- somevector
助けてくれてありがとう。