r expand.grid给出每个组合 - 不是预期的

时间:2016-08-24 08:33:53

标签: r

我甚至不确定如何给这个更好,而不是明显重复类型的标题,但我认为这是关于expand.grid的另一个问题。

我有一个变量列表,我需要一个data.frame或每个可能组合的列表来提供一些序数回归。

列表

> indVars <- as.list(c("T.P","T.M","T.S","E"))

期望的输出

  > out List of (?)
: "T.P"
: "T.M"
: "T.S"
: "E"
: "T.P" "T.M"
: "T.P" "T.S"
: "T.P" "E"
.
.
.
: "T.P" "T.M" "T.S" "E"

尝试

  1. expand.grid(indVars)提供一行

    > expand.grid(indVars) Var1 Var2 Var3 Var4 1 T.P T.M T.S E

  2. expand.grid(indVars,indVars)提供了所有两个变量组合中的16行但不执行3或4个 AND 其中indVars[i]==indVars[i](因此您得到的行像

    > expand.grid(indVars,indVars)[1,] Var1 Var2 1 T.P T.P

  3. 逻辑说expand.grid(indVars,indVars,indVars,indVars)给出了所有组合(其中256个),但最终你得到了具有相同indVar的多个实例的行。例如:

    > expand.grid(indVars,indVars,indVars,indVars)[241,] Var1 Var2 Var3 Var4 241 T.P T.P E E

  4. 请求:有人可以指出如何将这4个变量列表扩展为1,2,3和4的每个组合,没有重复项吗?

1 个答案:

答案 0 :(得分:3)

这可能是一个XY问题,并且有一个更好的方法来进行序数回归。

我怀疑订单无关紧要。使用combn

res <- lapply(seq_along(indVars), combn, x = indVars, simplify = FALSE)
unlist(res, FALSE)

# [[1]]
# [1] "T.P"
# 
# [[2]]
# [1] "T.M"
# 
# [[3]]
# [1] "T.S"
# 
# [[4]]
# [1] "E"
# 
# [[5]]
# [1] "T.P" "T.M"
# 
# [[6]]
# [1] "T.P" "T.S"
# 
# [[7]]
# [1] "T.P" "E"  
# 
# [[8]]
# [1] "T.M" "T.S"
# 
# [[9]]
# [1] "T.M" "E"  
# 
# [[10]]
# [1] "T.S" "E"  
# 
# [[11]]
# [1] "T.P" "T.M" "T.S"
# 
# [[12]]
# [1] "T.P" "T.M" "E"  
# 
# [[13]]
# [1] "T.P" "T.S" "E"  
# 
# [[14]]
# [1] "T.M" "T.S" "E"  
# 
# [[15]]
# [1] "T.P" "T.M" "T.S" "E"  
相关问题