2016-08-24 2 views
1

Я даже не уверен, как это сделать лучше, и не обязательно duplicate тип, название, но я думаю, что это другой вопрос о expand.grid.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 или четыре И где 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 переменных в каждой комбинации 1,2,3 и 4 из них без каких-либо дубликатов?

+1

Если ваша конечная цель состоит в том, чтобы фактически _fit_ модели всех возможных комбинаций предсказателей, а затем посмотреть на 'Мумин :: dredge'. 'dredge', похоже, доволен объектами ординарной регрессии (см. [« Список поддерживаемых моделей »] (https://cran.r-project.org/web/packages/MuMIn/MuMIn.pdf)). См. Также [различные возможные комбинации переменных для обобщенной линейной модели] (http://stackoverflow.com/questions/22664116/different-possible-combinations-of-variables-for-a-generalized- linear-model). – Henrik

ответ

3

Возможно, это проблема XY, и есть лучший aproach, чтобы сделать порядковый регресс.

Я подозреваю, что заказ не имеет значения. Используйте 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" 
Смежные вопросы