【问题标题】:R Keep random function in a vector repeating functionR在向量重复函数中保持随机函数
【发布时间】:2017-09-18 08:17:31
【问题描述】:

我需要将 16 个数字的向量重复 100 次,其中一些数字是固定的,一些是在特定位置随机创建的。我创建了一个函数,但它重复了随机生成的第一个向量,甚至是随机数。但我需要函数样本在每个重复向量中工作,以获得所需位置的 100 个随机数的数组。

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)

你能帮帮我吗?谢谢你,

【问题讨论】:

    标签: r rep


    【解决方案1】:

    这行得通 - 它将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))
    

    【讨论】:

    • 感谢您的回答,抱歉耽搁了,我真的很忙。问候,
    【解决方案2】:

    在您的代码中,您在开始时创建一次随机向量,然后将该(固定)向量复制 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
    

    【讨论】:

    • 感谢您的回答,抱歉耽搁了,我真的很忙。问候,
    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 2018-08-26
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    相关资源
    最近更新 更多