首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >expand.grid在R中的迭代使用

expand.grid在R中的迭代使用
EN

Stack Overflow用户
提问于 2015-09-09 12:08:50
回答 1查看 449关注 0票数 1

我想知道是否有任何方法可以使用expand.grid()函数(或任何其他函数)为指定数量的序列生成所有可能的组合。后者是由用户提供的。

想要的结果。例如,

代码语言:javascript
运行
复制
expand.grid(0:1, 0:1)
  Var1 Var2
1    0    0
2    1    0
3    0    1
4    1    1

expand.grid(0:1, 0:1, 0:1)
  Var1 Var2 Var3
1    0    0    0
2    1    0    0
3    0    1    0
4    1    1    0
5    0    0    1
6    1    0    1
7    0    1    1
8    1    1    1

expand.grid(0:1, 0:1, 0:1, ...)
  Var1 Var2 Var3 ...
1    0    0    0 ...
2    1    0    0 ...
3    0    1    0 ...
4    1    1    0 ...
5    0    0    1 ...
6    1    0    1 ...
7    0    1    1 ...
8    1    1    1 ...
.    .    .    .
.    .    .    .
.    .    .    .

注意事项:实现不限于0-1序列,所以它也适用于类似expand.grid(0:1, 0:5, 2:4, 3:5)的东西。

我的实现。--我正在尝试这样的东西:

代码语言:javascript
运行
复制
expand.grid(rep(0:1, 3))

但R将其解释为一个单一序列:

代码语言:javascript
运行
复制
  Var1
1    0
2    1
3    0
4    1
5    0

任何帮助都是非常感谢的!

EN

Stack Overflow用户

回答已采纳

发布于 2015-09-09 12:10:04

我们可以rep list然后做expand.grid

代码语言:javascript
运行
复制
expand.grid(rep(list(0:1),3))
#  Var1 Var2 Var3
#1    0    0    0
#2    1    0    0
#3    0    1    0
#4    1    1    0
#5    0    0    1
#6    1    0    1
#7    0    1    1
#8    1    1    1

或者另一个选项是使用replicatesimplify=FALSE返回list输出,然后使用expand.grid

代码语言:javascript
运行
复制
expand.grid(replicate(3, 0:1, simplify=FALSE))
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32479176

复制
相关文章

相似问题

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