像邻接矩阵一样查询和操作图
用法
# 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 或名称或逻辑向量。详见下文。
- ...
目前忽略。
- from
一个数字或字符向量,给出顶点 ID 或名称。与
to
参数一起,可用于查询/设置一系列边。详见下文。此参数不能与任何i
和j
参数一起出现,如果它存在,则to
参数也必须存在。- to
一个数字或字符向量,给出顶点 ID 或名称。与
from
参数一起,可用于查询/设置一系列边。详见下文。此参数不能与任何i
和j
参数一起出现,如果它存在,则from
参数也必须存在。- sparse
逻辑标量,是否返回稀疏矩阵。
- edges
逻辑标量,是否返回边 ID。
- drop
忽略。
- attr
如果不是
NULL
,则应为边属性的名称。查询并返回此属性。
详细信息
单方括号索引图的(可能加权的)邻接矩阵。以下是您可以执行的操作
检查图中两个顶点(\(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”如果网络中已存在边,则仅更新其权重或其他属性。如果图已加权,则
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
将每条孤立顶点到顶点一添加一条边,并且
G <- make_empty_graph(10)
G[-1,1] <- TRUE
创建一个星型图。
当然,索引运算符支持顶点名称,因此除了数字顶点 ID 外,也可以将顶点赋予 “[
” 和 “[[
”。
参见
其他结构查询: [[.igraph()
, adjacent_vertices()
, are_adjacent()
, ends()
, get_edge_ids()
, gorder()
, gsize()
, head_of()
, incident()
, incident_edges()
, is_directed()
, neighbors()
, tail_of()