如果您从 R 中使用 igraph,请使用此选项
[.igraph {igraph} | R 文档 |
查询和操作图,就像它是邻接矩阵一样
## S3 method for class 'igraph'
x[
i,
j,
...,
from,
to,
sparse = igraph_opt("sparsematrices"),
edges = FALSE,
drop = TRUE,
attr = if (is_weighted(x)) "weight" else NULL
]
x |
图。 |
i |
索引。顶点 ID 或名称或逻辑向量。请参阅下面的详细信息。 |
j |
索引。顶点 ID 或名称或逻辑向量。请参阅下面的详细信息。 |
... |
当前被忽略。 |
从 |
数字或字符向量,给出顶点 ID 或名称。与 |
到 |
数字或字符向量,给出顶点 ID 或名称。与 |
sparse |
逻辑标量,是否返回稀疏矩阵。 |
边 |
逻辑标量,是否返回边 ID。 |
drop |
忽略。 |
attr |
如果不是 |
单括号索引图的(可能加权的)邻接矩阵。以下是你可以用它做的事情
检查图中两个顶点(v
和 w
)之间是否存在边
graph[v, w]
返回一个数值标量,如果边存在则为 1,否则为 0。
提取图的(稀疏)邻接矩阵,或其中的一部分
graph[] graph[1:3,5:6] graph[c(1,3,5),]
第一个变体返回完整的邻接矩阵,其他两个返回其中的一部分。
from
和 to
参数可用于检查多个边的存在。在这种情况下,from
和 to
都必须存在,并且它们必须具有相同的长度。它们必须包含顶点 ID 或名称。返回一个数值向量,其长度与 from
和 to
相同,对于存在的边包含 1,对于不存在的边包含 0。例子
graph[from=1:3, to=c(2,3,5)]
.
对于加权图,[
运算符返回边权重。对于不存在的边,返回零权重。也可以通过给出 attr
参数来查询其他边属性。
查询边 ID 而不是边的存在或边属性。例如
graph[1, 2, edges=TRUE]
返回顶点 1 和 2 之间的边的 ID,如果不存在这样的边则返回零。
向图中添加一个或多个边。为此,虚构邻接矩阵的元素必须设置为非零数值(或 TRUE
)
graph[1, 2] <- 1 graph[1:3,1] <- 1 graph[from=1:3, to=c(2,3,5)] <- TRUE
这不会影响图中已存在的边,即不会创建多个边。
向图中添加加权边。attr
参数包含要设置的边属性的名称,因此不必是“weight”
graph[1, 2, attr="weight"]<- 5 graph[from=1:3, to=c(2,3,5)] <- c(1,-1,4)
如果网络中已经存在边,则只会更新其权重或其他属性。如果图已经加权,则 attr="weight"
设置是隐式的,无需显式给出。
删除边。替换语法允许通过指定 FALSE
或 NULL
作为替换值来删除边
graph[v, w] <- FALSE
从顶点 v
到顶点 w
删除边。由于这可用于删除两组顶点之间的边,无论是成对的
graph[from=v, to=w] <- FALSE
还是不是
graph[v, w] <- FALSE
如果 v
和 w
是边 ID 或名称的向量。
“[
” 允许逻辑索引和负索引,以及通常的 R 语义。例如
graph[degree(graph)==0, 1] <- 1
从每个孤立顶点向顶点 1 添加边,并且
G <- make_empty_graph(10) G[-1,1] <- TRUE
创建一个星图。
当然,索引运算符支持顶点名称,因此可以将顶点而不是数字顶点 ID 提供给“[
” 和 “[[
”。
标量或矩阵。请参阅下面的详细信息。
其他结构查询:[[.igraph()
, adjacent_vertices()
, are_adjacent()
, ends()
, get.edge.ids()
, gorder()
, gsize()
, head_of()
, incident_edges()
, incident()
, is_directed()
, neighbors()
, tail_of()