2017-10-09 13 views
-1

나는 r에 값의 연속적인 순열을 만들려고하지만 내 필요에 따라 만들 수 없습니다. 이것은연속 순열 및 r의 조합

ID   Val Perm 1 Perm 2 Perm3 Perm 4 Perm 5 Perm 6 Perm 7 Perm 8 Perm 9 Perm 10 Perm 11 Perm 12 Perm 13 Perm 14 Perm 15 Perm 16 Perm 17 Perm 18 Perm 19 Perm 20 Perm 21 Perm 22 Perm 23 Perm 24 Perm 25 Perm 26 Perm 27 Perm 28 Perm 29 Perm 30 Perm 31 Perm 32 Perm 33 Perm 34 Perm 35 Perm 36 
12,000  1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
12,581  2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
12,857  2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
13,387  5 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
15,846  2 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
23,387  5 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 3 Range 3 Range 2 Range 2 Range 2 Range 2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 Range 1 Range 1 Range 1 
25,424  4 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 3 Range 3 Range 3 Range 2 Range 2 Range 2 Range 3 Range 3 Range 2 Range 2 Range 2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 2 Range 2 Range 1 Range 1 Range 1 
25,424  2 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 3 Range 3 Range 3 Range 3 Range 2 Range 2 Range 3 Range 3 Range 3 Range 2 Range 2 Range 3 Range 3 Range 2 Range 2 Range 3 Range 2 Range 2 Range 2 Range 2 Range 1 
25,932  6 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 3 Range 3 Range 3 Range 3 Range 3 Range 2 Range 3 Range 3 Range 3 Range 3 Range 2 Range 3 Range 3 Range 3 Range 2 Range 3 Range 3 Range 2 Range 3 Range 2 Range 2 
25,932  1 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 Range 3 

을 것으로 예상된다하지만 그 대신 내가 순열에 대한 첫 번째 열 것 순열 열 제조

apply(combinations(n=3,r=5,v = c("Range 1","Range 2","Range 3"),repeats.allowed = T),2,sort) 
     [,1]  [,2]  [,3]  [,4]  [,5]  
[1,] "Range 1" "Range 1" "Range 1" "Range 1" "Range 1" 
[2,] "Range 1" "Range 1" "Range 1" "Range 1" "Range 2" 
[3,] "Range 1" "Range 1" "Range 1" "Range 1" "Range 2" 
[4,] "Range 1" "Range 1" "Range 1" "Range 2" "Range 2" 
[5,] "Range 1" "Range 1" "Range 1" "Range 2" "Range 2" 
[6,] "Range 1" "Range 1" "Range 1" "Range 2" "Range 2" 
[7,] "Range 1" "Range 1" "Range 2" "Range 2" "Range 3" 
[8,] "Range 1" "Range 1" "Range 2" "Range 2" "Range 3" 
[9,] "Range 1" "Range 1" "Range 2" "Range 2" "Range 3" 
[10,] "Range 1" "Range 1" "Range 2" "Range 2" "Range 3" 
[11,] "Range 1" "Range 2" "Range 2" "Range 2" "Range 3" 
[12,] "Range 1" "Range 2" "Range 2" "Range 3" "Range 3" 
[13,] "Range 1" "Range 2" "Range 2" "Range 3" "Range 3" 
[14,] "Range 1" "Range 2" "Range 2" "Range 3" "Range 3" 
[15,] "Range 1" "Range 2" "Range 2" "Range 3" "Range 3" 
[16,] "Range 2" "Range 2" "Range 3" "Range 3" "Range 3" 
[17,] "Range 2" "Range 2" "Range 3" "Range 3" "Range 3" 
[18,] "Range 2" "Range 2" "Range 3" "Range 3" "Range 3" 
[19,] "Range 2" "Range 3" "Range 3" "Range 3" "Range 3" 
[20,] "Range 2" "Range 3" "Range 3" "Range 3" "Range 3" 
[21,] "Range 3" "Range 3" "Range 3" "Range 3" "Range 3" 

같은 논리를 다른 값을 받고 있어요 ("파마 1")은 "범위를 유지처럼 1 "상수와"Range 2 "및"Range 3 "이 변경되면"Range 2 "가 계속 증가하고"Range 3 "은"Perm 8 "열로,"Perm 9 "열에서"Range 1 " "Range 2"와 "Range 3"이 변화하면서 "Range 2"는 계속 증가하고 "Range 3"은 "Perm 15"열로, "Perm 16"열에서 "Range 1"까지 다시 감소합니다 증분 된 2 등.

다른 기능을 사용하여 완료 할 수 있습니까? 미리 감사드립니다.

Domnick.

+0

'expand.grid' 함수를 사용해 보셨습니까? 012.gif (rep (list (v), 5))' –

+0

이렇게하면 같은 수의 값을 얻을 수 있습니다 ("Range 1", "Range 1", "Range 2", "Range 3" , "Range 2", "Range 3") – Domnick

답변

0

패턴이 일반적이지 않습니다. 당신의 패턴에 대해 말할 수있는 것부터이 사용자 정의 함수를 시도 할 수 있습니다.

library(purrr) 
library(dplyr) 
myfun <- function(n) { 
     require(purrr) 
     require(dplyr) 
     S <- "Range" 
     df <- Reduce("data.frame", lapply(1:(n-2), function(x) data.frame(c(paste0(S, 1), rep(paste0(S, 2), x), rep(paste0(S, 3), n-x-1))))) %>% 
       setNames(paste0("Perm", 1:(n-2))) 
     return(df) 
    } 

df <- myfun(6) 
    # Perm1 Perm2 Perm3 Perm4 
# 1 Range1 Range1 Range1 Range1 
# 2 Range2 Range2 Range2 Range2 
# 3 Range3 Range2 Range2 Range2 
# 4 Range3 Range3 Range2 Range2 
# 5 Range3 Range3 Range3 Range2 
# 6 Range3 Range3 Range3 Range3 
+0

예상 테이블을 업데이트했습니다. – Domnick