r - 编写一个 R 函数来查找二进制子集
问题描述
我有一个二进制向量 x=(1,0,0,1)。假设包含此向量自身的低阶项为 (0,0,0,0)、(0,0,0,1)、(1,0,0,0) 和 (1,0,0,1) . 我如何在 R 中找到这个低阶向量。
到目前为止我所理解的:基本上我们想要找到子集,将每个 1 替换为 0。但是要在 R 中做到这一点?我一无所知?
这是我到目前为止所尝试的。
a<-c(1,0,0,1)
M<-length(a)
for(i in 1:M){
ifelse(a[i]==1, a[i]<-0, next)
print(a)
}
[1] 0 0 0 1
[1] 0 0 0 0
我要详细查找的内容:例如,我有 4 个因素 A、B、C、D。这里 (1,0,0,1) 表示 AD。
现在我想要一个 (1,0,0,1) 的子集,这意味着 AD。在我的子集中,我不能有 B 和 C。结果将是二进制形式的 {} {A} {D} {AD} (0,0,0,0), (1,0,0,0),( 0,0,0,1),(1,0,0,1)。
解决方案
这是一种依赖于expand.grid
完成繁重工作的方法:
vecs = lapply(a, seq, 0) # keep 0s as 0, make 1s c(1, 0)
do.call(expand.grid, vecs) # generate all combinations
# Var1 Var2 Var3 Var4
# 1 1 0 0 1
# 2 0 0 0 1
# 3 1 0 0 0
# 4 0 0 0 0
推荐阅读
- node.js - Google oAuth 流程是否适用于响应本机应用程序
- android - 获取配置文件不同于 GATT 和 GATT_SERVER 的已连接设备列表
- python-3.x - 如何找到使用 python 完成给定供应网络的供应商明智成本
- unit-testing - 如何编写测试用例来验证 OAuth 令牌?
- dictionary - 我正在尝试从 ethplorer api 获取每个地址的地址信息,但我面临太多请求如何解决
- c++ - glsl顶点着色器统一变量没有被激活
- ansible - 如何使用 ansible 更改挂载的所有权?
- amazon-web-services - EB Worker 有问题:ELB 运行状况失败或不可用于 2 个实例中的 1 个
- python - 在 matplotlib 中填充子图的双循环
- node.js - 关闭 mongoDB 连接