2017-04-21 38 views
0

我需要重複100次包含一些固定數字和一些在特定點中隨機創建的16位數的向量。我創建了一個函數,但它重複隨機生成的第一個向量,即使是隨機數。但我需要函數樣本在每個重複向量中工作,以獲得所需位置上的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

謝謝你的回答,併爲延誤抱歉,我真的很忙。問候, –