我在以下过程中遇到问题:
library(igraph)
k <- cbind(c(.2,.2),c(.2,0))
sbm_centr <- replicate(
2000,
sample_sbm(49, pref.matrix = k, block.sizes = c(24, 25)) %>%
centr_degree(.)$centralization
)
问题是,该函数生成了一个带有两个参数的结果(除了每个复制的ID(,因此过程报告了一个错误:中的错误$centr_degree(.(:传递给"$"的3个参数需要2个">
我试图用以下表达式保存其中一个参数,但没有成功:centr_degree(.)$centralization[1])
但该列表只包含0。提前感谢您的评论。
使用{}
阻止代码
library(dplyr)
library(igraph)
library(purrr)
sbm_centr <- replicate(
2000,
sample_sbm(49, pref.matrix = k, block.sizes = c(24, 25)) %>%
{centr_degree(.)$centralization}
)
或在具有pluck
的管道中使用列表元素提取
sbm_centr <- replicate(2000,
sample_sbm(49, pref.matrix = k, block.sizes = c(24, 25)) %>%
centr_degree(.) %>%
pluck("centralization"))
-输出
> str(sbm_centr)
num [1:2000] 0.158 0.188 0.128 0.153 0.165 ...
我们可以在管道中使用[[
,如下
sbm_centr <- replicate(
1,
sample_sbm(49, pref.matrix = k, block.sizes = c(24, 25)) %>%
centr_degree(.) %>%
`[[`("centralization")
)