首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中计算Powerset

在R中计算Powerset
EN

Stack Overflow用户
提问于 2015-07-02 21:07:18
回答 2查看 425关注 0票数 1

我必须设置A={1,2,3}B={a,b,c,d,e}。我想要来自AB的元素子集的集合,它们至少包含A的一个元素和B的一个元素。正如这里所明确的:Cartesian product with all elements,我需要使用以下公式:

代码语言:javascript
复制
P(A ∪ B)∖(P(A) ∪ P(B))

R中,我尝试了以下查询:

代码语言:javascript
复制
require(HapEstXXR)

A <- c(1,2,3)
B <- c("A", "B", "C", "D", "E")

setdiff(powerset(union(A,B)), union(powerset(A),powerset(B)))

结果我得到了221个元素。据我所知,应该有(2^3-1)(2^5-1) = 217元素。

我的查询是错误的吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-02 21:32:32

代码语言:javascript
复制
length( s1 <- powerset(union(A,B)) ) #255
length( s2 <- union(powerset(A),powerset(B)) ) # 38

255-38 = 217,这似乎就是你要找的

但是,并非所有s2都包含在s1中

代码语言:javascript
复制
setdiff(s2, s1)
# 8 sets to create.
# 32 sets to create.
# 256 sets to create.
# [[1]]
# [1] 1 2
# 
# [[2]]
# [1] 1 3
# 
# [[3]]
# [1] 2 3
# 
# [[4]]
# [1] 1 2 3

这4个元素解释了221和217之间的差异。

票数 1
EN

Stack Overflow用户

发布于 2015-07-02 22:29:33

不要混用类:

代码语言:javascript
复制
length( z <- setdiff(powerset(union(A,B)), union(powerset(as.character(A)),powerset(B))) ) 
# 217

请注意,as.character已应用于A

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31185513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档