2017-10-09 4 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" 

のようなロジックを他の値を取得M(「パーマ1」)「の範囲を維持するようになります1 "定数、"範囲2 "および"範囲3 "が変化すると、"範囲2 "は増加し続け、"範囲3 "は列" Perm 8 "まで減少し、" Perm 9 "列から"範囲1 " 「レンジ2」および「レンジ3」が変化し、「レンジ2」が増加し続け、「レンジ3」が「パーマ15」まで減少し、「パーマネント16」のカラムから「レンジ1」に再び減少するインクリメントされた2など。

他の機能を使用することはできますか? ありがとうございます。

Domnick。

+0

'expand.grid'関数を試しましたか? –

+0

それは私に等しい数の値を与えます( "Range 1"、 "Range 1"、 "Range 2"、 "Range 3"); expand.grid(rep(list(v)、5) 、 "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

関連する問題