我想增加igraph圖的鄰接矩陣。我嘗試沒有成功執行以下操作:在igraph圖中批量修改邊緣
require(igraph)
require(Matrix)
set.seed(123) # to get always the same graph (see "R reproducible example")
G <- igraph::erdos.renyi.game(20,10,type="gnm")
mat <- Matrix(1:16, ncol=4,nrow=4)
G[1:4, 1:4] <- mat
# Error in `[<-.igraph`(`*tmp*`, 1:4, 1:4, value = <S4 object of class "dgeMatrix">) :
# New value should be NULL, numeric or logical
也試過: G [1:4,1:4] < - as.numeric(墊)
# Error in `[<-.igraph`(`*tmp*`, 1:4, 1:4, value = c(1, 2, 3, 4, 5, 6, 7, :
# Logical or numeric value must be of length 1
我知道有關add.edges()功能,但它似乎不會取代邊緣,而是附加重量?如果我錯了,請糾正我的錯誤。
我是R
的新手,所以請儘可能詳細。
由於
我不確定你在這裏做什麼? 「替代邊緣」是什麼意思?如果要刪除頂點1:4中的邊,並添加矩陣中的邊,那麼只需使用'delete.edges()'和'add.edges()。 –
通過'替換邊緣'我實際上意味着使用新的權重去除和替換邊緣權重,只需要一個更有效的步驟。當我說高效時,我的意思是隻更新需要它的位置上的節點的索引,而不是全部刪除,然後將全部添加到我想要的子矩陣中。我猜這可能是緩慢的,因爲節點索引必須更新兩次,以獲得子矩陣中的所有節點? – quine
如果邊緣已經全部存在,那麼只需更新它們的權重。這可以用'G [from = ...,to = ...] < - newweigths'完成。您不能在一個步驟中添加邊和更新其他邊的權重。無法在單個步驟中刪除邊和邊。順便說一句。添加權重不會改變內部的圖形索引,但是在R中,它會複製整個圖形一次。 –