【发布时间】:2021-04-15 22:51:16
【问题描述】:
我之前在(see here) 提出过这个问题,并使用purr 包得到了满意的答案。但是,这已被证明是我程序中的瓶颈,因此我想使用 RCPP 包重写该部分。
真子集:集合 S 的真子集 S' 是严格包含在 S 中的子集,因此排除了 S 本身(注意我也排除了空集)。
假设列表中有以下向量:
a = c(1,2)
b = c(1,3)
c = c(2,4)
d = c(1,2,3,4)
e = c(2,4,5)
f = c(1,2,3)
我的目标是只保留列表中没有适当子集的向量,在本例中为 a、b 和 c。
以前的解决方案
library(purr)
possibilities <- list(a,b,c,d,e,f)
keep(possibilities,
map2_lgl(.x = possibilities,
.y = seq_along(possibilities),
~ !any(map_lgl(possibilities[-.y], function(z) all(z %in% .x)))))
【问题讨论】:
-
仅供参考:拼写为 Rcpp。大写 R,小写 cpp。
-
你的问题(我没有反对)可能会被关闭。这不是“给我写代码”订购服务。您的问题中的 Rcpp 为零,除了希望“如果这个现有代码运行得更快会不会很好”。
-
也不是我的反对意见,但也可能值得探索其他基础 R 优化。请在下面查看我的答案。
-
非常有用的建议@MauritsEvers 谢谢