R 从4个或更多向量创建2个和3个变量的组合

R 从4个或更多向量创建2个和3个变量的组合,r,combinations,R,Combinations,我正在寻找一些方向,因为我是R的新手。任何帮助都将不胜感激 我有以下向量: > types <- c("A", "B", "C", "D", "E") > regions <- c("Atlantic", "Central", "Western") > categories <- c("AA", "AB", "MN", "XY") > market <- c("Small", "Medium", "Large") 我打算使用dplyr进行总结,但

我正在寻找一些方向,因为我是R的新手。任何帮助都将不胜感激

我有以下向量:

> types <- c("A", "B", "C", "D", "E")
> regions <- c("Atlantic", "Central", "Western")
> categories <- c("AA", "AB", "MN", "XY")
> market <- c("Small", "Medium", "Large")
我打算使用dplyr进行总结,但如果我不知道关键点,我将无法过滤我的主数据集。例如,我需要双打像

(“类型:A”,“市场:小型”)

这样我就可以使用strsplit()来获取变量名


甚至可以使用R实现这个(创建所有这些命名组合)吗?

我想这会满足您的要求:

combos2 <- combn(c('types', 'regions', 'categories', 'market'), 2)
combos3 <- combn(c('types', 'regions', 'categories', 'market'), 3)

c(unlist(apply(combos2, 2, function(x) apply(expand.grid(get(x[1]), get(x[2])), 1, paste, collapse=':'))),
  unlist(apply(combos3, 2, function(x) apply(expand.grid(get(x[1]), get(x[2]), get(x[3])), 1, paste, collapse=':'))))

这将提供所有两种和三种组合,使用
get()
返回相关对象并馈送到
expand.grid()
。如果你想要所有的4和5等长版本,它不是最优雅的,但它可以工作。

是的,很抱歉我有点误读了你最初的帖子。根据什么样的结构对您来说最方便,您可能需要重写以给出一个数组,其中第一列是变量名,第二列是值great!工作。抱歉,我不知道如何包含姓名。非常感谢你。
combos2 <- combn(c('types', 'regions', 'categories', 'market'), 2)
combos3 <- combn(c('types', 'regions', 'categories', 'market'), 3)

c(unlist(apply(combos2, 2, function(x) apply(expand.grid(get(x[1]), get(x[2])), 1, paste, collapse=':'))),
  unlist(apply(combos3, 2, function(x) apply(expand.grid(get(x[1]), get(x[2]), get(x[3])), 1, paste, collapse=':'))))
c(unlist(apply(combos2, 2, function(x) apply(expand.grid(get(x[1]), get(x[2])), 1, function(y) paste(x[1],y[1],x[2],y[2], sep=':')))),
  unlist(apply(combos3, 2, function(x) apply(expand.grid(get(x[1]), get(x[2]), get(x[3])), 1, function(y) paste(x[1],y[1],x[2],y[2],x[3],y[3], sep=':')))))