相关疑难解决方法(0)

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助.

您有什么建议创建优秀示例的提示?如何以文本格式粘贴中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput(),dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外c,df,data等?

怎样才能成为一位伟大的重复的例子?

r r-faq

2474
推荐指数
23
解决办法
28万
查看次数

用于计算R中的集合的幂集(所有可能的子集)的算法

我无法在任何地方找到答案,所以这是我的解决方案.

问题是:如何计算R中的功率?

可以使用库"sets"执行此操作,使用命令2^as.set(c(1,2,3,4))生成输出{{}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}, {1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}, {1, 2, 3, 4}}.但是,这使用递归算法,这种算法相当慢.


这是我提出的算法.

它是非递归的,所以它比其他一些解决方案快得多(在我的机器上比"sets"包中的算法快约100倍).速度仍为O(2 ^ n).

该算法的概念基础如下:

for each element in the set:
    for each subset constructed so far:
        new subset = (subset + element)
Run Code Online (Sandbox Code Playgroud)

这是R代码:

编辑:这是相同概念的更快版本; 我原来的算法是在这篇文章的第三条评论中.对于一组19的长度,这台机器在我的机器上快30%.

powerset = function(s){
    len = length(s)
    l = vector(mode="list",length=2^len) ; l[[1]]=numeric()
    counter = 1L
    for(x …
Run Code Online (Sandbox Code Playgroud)

r set powerset

6
推荐指数
1
解决办法
6081
查看次数

标签 统计

r ×2

powerset ×1

r-faq ×1

set ×1