gpt4 book ai didi

r - 将稀疏邻接列表转换为 R 中的完整矩阵

转载 作者:行者123 更新时间:2023-12-05 09:33:53 24 4
gpt4 key购买 nike

我在这个网站上的研究中看到过与此类似的问题,但不是这个确切的问题(大多数答案涉及从列表创建稀疏矩阵)。

我有一个相邻多边形列表,但希望将其转换为完整矩阵。我可以使用嵌套的 for 循环相当笨拙地完成此操作,但我正在尝试通过减少对它们的依赖来改进我的编码。所以本质上,我想从中得到:

my_list <- list("1" = c(2, 3),
"2" = 1,
"3" = 1)

看起来像这样的东西:

#     [,1] [,2] [,3]
#[1,] 0 1 1
#[2,] 1 0 0
#[3,] 1 0 0

不求助于此:

for(i in 1:3{
for(j in 1:3{
[look to list to see if there is a value corresponding to (i, j),
if so insert 1, if not, zero]
}
}

非常感谢您的宝贵时间。

最佳答案

你可以试试sapplytabulate

nbins <- max(unlist(my_list)) # 3
sapply(my_list, function(x) tabulate(x, nbins = nbins))
# [,1] [,2] [,3]
#[1,] 0 1 1
#[2,] 1 0 0
#[3,] 1 0 0

可以在没有匿名函数的情况下编写,并进行安全检查

vapply(my_list, tabulate, nbins = nbins, FUN.VALUE = integer(nbins))

关于r - 将稀疏邻接列表转换为 R 中的完整矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66968355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com