r语言 - 在 tnet 中计算数据帧列表的接近度时保留带有 id 的列



我正在使用R的tnet(https://www.rdocumentation.org/packages/tnet/versions/3.0.14/topics/closeness_w(的closeness_w函数。

我有两个数据框,df1df2.当我计算每个数据帧的closeness_w时,R 保留第 i 列中的唯一 id(并将其重命名为"节点"(。输出显示"接近度"和"n.接近度"结果。

但是,如果我对mylist的数据帧执行此操作,R 会删除 i 列并且不显示"n.closeness"结果。对于mylist,我正在尝试获得"节点","接近度"和"n.closeness"结果,就像我在每个单独的数据帧上进行计算时得到它们一样。

有人知道如何做到这一点吗?

df1

i   <- c(1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 6)
j   <- c(2, 3, 1, 3, 4, 5, 1, 2, 2, 2, 6, 5)
w   <- c(4, 2, 4, 4, 1, 2, 2, 4, 1, 2, 1, 1)
df1 <- data.frame(i, j, w)
closeness_w(df1)  

df2

i   <- c(1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 7)
j   <- c(2, 3, 4, 3, 7, 5, 1, 6, 2, 2, 1, 5)
w   <- c(4, 2, 4, 4, 1, 2, 2, 4, 1, 2, 1, 1)
df2 <- data.frame(i, j, w)
closeness_w(df2)

mylist

mylist <- list(df1, df2)
mylist_output <- lapply(mylist, function(x) closeness_w(x)[, "closeness", drop = FALSE])
mylist_output

当你这样做时

mylist_output <- lapply(mylist, function(x) closeness_w(x)[, "closeness", drop = FALSE])

您指定仅返回带有"接近度"列的data.frame。如果要保留所有列,只需执行以下操作:

mylist_output <- lapply(mylist, function(x) closeness_w(x))

mylist_output <- lapply(mylist,closeness_w)

希望这有帮助。

最新更新