2017-04-21 15 views
0

固定数の16個のベクトルと特定の場所にランダムに生成されたベクトルの100倍を繰り返す必要があります。私は関数を作成しましたが、ランダムに生成された最初のベクトル、さらには乱数を繰り返します。しかし、私は、必要な位置に100個の乱数の配列を得るために、関数のサンプルがあらゆる繰り返しベクトルで機能することが必要です。Rベクトル反復関数でランダム関数を維持する

r1<- c(1,3,2,1,2,sample(1:4,1,replace=T),4,sample(1:4,1,replace=T),3,sample(1:4,1,replace=T), 
sample(1:4,1,replace=T),2,sample(1:4,1,replace=T),1,sample(1:4,1,replace=T),3) 

rep.row<-function(x,n){matrix(rep(r1,each=100),nrow=100)}  
rp <- rep.row(r1) 

私を助けてもらえますか?ありがとう、

答えて

1

コードでは、最初にランダムなベクトルを作成し、その(固定)ベクトルを100回複製します。あなたがしなければならないことは、各反復でランダムサンプリングを繰り返すことです。たとえば、使用してこの操作を行います。

## Function to create your random vector: 
createVector <- function(ii){ 
    r1 <- c(1, 3, 2, 1, 2, 
      sample(1:4, 1, replace = TRUE), 4, 
      sample(1:4, 1, replace = TRUE), 3, 
      sample(1:4, 1, replace = TRUE), 
      sample(1:4, 1, replace = TRUE), 2, 
      sample(1:4, 1, replace = TRUE), 1, 
      sample(1:4, 1, replace = TRUE), 3) 
} 

## Replicate 100 times: 
set.seed(1234) 
rp <- replicate(100, createVector()) 

head(rp) 
#  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] 
# [1,] 1 3 2 1 2 1 4 3 3  3  3  2  4  1 
# [2,] 1 3 2 1 2 1 4 1 3  3  3  2  3  1 
# [3,] 1 3 2 1 2 2 4 4 3  2  4  2  2  1 
# [4,] 1 3 2 1 2 1 4 1 3  2  2  2  1  1 
# [5,] 1 3 2 1 2 1 4 4 3  3  4  2  4  1 
# [6,] 1 3 2 1 2 2 4 2 3  2  3  2  1  1 
#  [,15] [,16] 
# [1,]  3  3 
# [2,]  3  3 
# [3,]  2  3 
# [4,]  1  3 
# [5,]  1  3 
# [6,]  4  3 
+0

ご回答いただきありがとうございます。遅れて申し訳ありません、私は本当に忙しかったです。よろしく、 –

0

これは動作します - それはあなたがあなたの乱数をしたいNAsを入れた後、最後にそれらを埋めます。

r2 <- c(1,3,2,1,2,NA,4,NA,3,NA,NA,2,NA,1,NA,3) 
rep.row <- matrix(rep(r2,each=100),nrow=100) 
rep.row <- apply(rep.row,c(1,2),function(x) ifelse(is.na(x),sample(1:4,1,replace=T),x)) 
+0

あなたの答えをありがとう、遅延のために申し訳ありません、私は本当に忙しかったです。よろしく、 –