Этот код, похоже, выполняет то, о чем вы просите.
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
print(value)
Или что-то вроде
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
some_list.append(value)
Или любое количество вещей.
Вы правы, degree
игнорирует веса независимо от ignore.eval
. Это видно в самой первой строке degree
, где мы имеем
dat <- as.edgelist.sna(dat)
, в то время как as.edgelist.sna
имеет параметр attrname
:
attrname - если x является сетевой объект, (необязательный) атрибут края, который будет использоваться для получения значений границ.
blockquote>Так что
degree
на самом деле даже не пытается использовать какие-либо веса. Чтобы исправить это, мы можем переопределить эту функцию, добавив возможность использовать веса, как вmyDegree <- function (dat, g = 1, nodes = NULL, gmode = "digraph", diag = FALSE, tmaxdev = FALSE, cmode = "freeman", rescale = FALSE, ignore.eval = FALSE, attrname = NULL) { dat <- as.edgelist.sna(dat, attrname = attrname) if (is.list(dat)) return(sapply(dat[g], degree, g = 1, nodes = nodes, gmode = gmode, diag = diag, tmaxdev = tmaxdev, cmode = cmode, rescale = rescale)) n <- attr(dat, "n") if (gmode == "graph") cmode <- "indegree" if (tmaxdev) { if (gmode == "digraph") deg <- switch(cmode, indegree = (n - 1) * (n - 1 + diag), outdegree = (n - 1) * (n - 1 + diag), freeman = (n - 1) * (2 * (n - 1) - 2 + diag)) else deg <- switch(cmode, indegree = (n - 1) * (n - 2 + diag), outdegree = (n - 1) * (n - 2 + diag), freeman = (n - 1) * (2 * (n - 1) - 2 + diag)) } else { m <- NROW(dat) cm <- switch(cmode, indegree = 0, outdegree = 1, freeman = 2) if (!(cmode %in% c("indegree", "outdegree", "freeman"))) stop("Unknown cmode in degree.\n") deg <- .C("degree_R", as.double(dat), as.integer(m), as.integer(cm), as.integer(diag), as.integer(ignore.eval), deg = as.double(rep(0, n)), PACKAGE = "sna", NAOK = TRUE)$deg if (rescale) deg <- deg/sum(deg) if (!is.null(nodes)) deg <- deg[nodes] } deg }
Это затем дает
(degree_unweighted <- myDegree(network_statnet, gmode = "graph", ignore.eval = TRUE)) # [1] 2 3 3 1 1 (degree_weighted <- myDegree(network_statnet, gmode = "graph", ignore.eval = FALSE, attrname = "weight")) # [1] 3 4 4 1 2
Я боюсь, что вам понадобится такая же настройка для других функций, таких как
betweenness
.