Нельзя ссылаться на узлы из одного графа при добавлении ребер в новый граф.Вам нужно будет предоставить попарный вектор по имени, чтобы добавить новые ребра.Примерно так:
non_lattice_edges <- ends(g1, non_lat_e[e_add]) %>%
t() %>%
as.vector()
g <- add.edges(g, non_lattice_edges)
Если вы никогда не удаляете вектор, вам не нужно добавлять имена вершин, потому что индексы вершин останутся согласованными.Вот ваш код, но без названных вершин:
n <- 5 #number of nodes
k <- 1 #number of neighbors for lattice connections
g <- make_lattice(length = n, dim = 1, nei = k, circular = TRUE) #lattice
lat_e <- E(g) #lattice edges
g1 <- g #make a copy
g1[V(g1), V(g1)] <- TRUE #add all possible edges
g1 <- simplify(g1) #remove loops
newe <- E(g1)
non_lat_e <- difference(newe, lat_e) #non lattice edges
n_switch <- 2
e_rem <- sample(1:length(lat_e),n_switch)
e_add <- sample(1:length(non_lat_e), n_switch)
g <- delete_edges(g, lat_e[e_rem]) #delete lattice edges
non_lattice_edges <- ends(g1, non_lat_e[e_add]) %>%
t() %>%
as.vector()
g <- add.edges(g, non_lattice_edges)