gpt4 book ai didi

r - 查找字符串向量的所有唯一组合的幂集

转载 作者:行者123 更新时间:2023-12-04 11:43:36 26 4
gpt4 key购买 nike

我试图找到长度为 39 的向量/项目列表的所有唯一分组。下面是我的代码:

x <- c("Dominion","progress","scarolina","tampa","tva","TminKTYS",
"TmaxKTYS","TminKBNA","TmaxKBNA","TminKMEM","TmaxKMEM",
"TminKCRW","TmaxKCRW","TminKROA","TmaxKROA","TminKCLT",
"TmaxKCLT","TminKCHS","TmaxKCHS","TminKATL","TmaxKATL",
"TminKCMH","TmaxKCMH","TminKJAX","TmaxKJAX","TminKLTH",
"TmaxKLTH","TminKMCO","TmaxKMCO","TminKMIA","TmaxKMIA",
"TminKPTA","TmaxKTPA","TminKPNS","TmaxKPNS","TminKLEX",
"TmaxKLEX","TminKSDF","TmaxKSDF")

# Generate a list with the combinations
zz <- sapply(seq_along(x), function(y) combn(x,y))
# Filter out all the duplicates
sapply(zz, function(z) t(unique(t(z))))

但是,该代码导致我的计算机内存不足。有一个更好的方法吗?我意识到我有一个很大的 list 。谢谢。

最佳答案

要计算所有唯一的子集,您只需创建与原始项目集的基数具有相同长度的所有二进制向量。如果有 39 个项目,那么您正在查看长度为 39 的所有二进制向量。每个向量的每个元素标识是或否,该项目是否在相应的子集中。

由于有 39 个项目,每个项目都可以在或不在给定的子集中,因此有 2^39 个可能的子集。排除空集,即全 0 向量,您有 2^39 - 1 个可能的子集。

也就是说,正如@joran 所说,大约有 549B 个向量。鉴于二进制向量最紧凑地表示数据(即没有字符串),那么您将需要 549B * 39 位来返回所有子集。我不认为你想存储这个:大约 2.68E12 个字节。如果您坚持使用这些字符,那么您的容量可能会达到数十 TB。

购买一个可以支持这个的系统当然是可行的,但不是很划算。

在元级别上,正如@JD 所说,这很可能不是您真正需要走的路。我建议发布一个新问题,也许可以在此处或与统计相关的 SE 网站上对其进行改进。

关于r - 查找字符串向量的所有唯一组合的幂集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6959903/

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