繁体   English   中英

根据R中的条件将值随机分配给两个矩阵

[英]randomly assign values to two matrix based on conditions in R

我有两个矩阵:old1和gl1,我想将两个矩阵的值赋给另外两个新矩阵。 我使用的方法是:1)求和两个矩阵; 2)使用样本函数随机分配值; 3)将大矩阵分成两个新矩阵。 以下是代码:

 library(ms.sev)

    ### old Global MSSS matrix
    data(oldMsss)

    old <- data.matrix(oldMsss)

    old1 <- old[-1,-1]

    ## use the global MSSS
    data(globalMsss)

    gl <- data.matrix(globalMsss)

    gl1 <- gl[,-1]

    ## combine
    tc <- rbind(gl1,old1)

    set.seed(1)

    n.permutations = 5
    sum.table = rep(1,n.permutations)

    for(j in 1:n.permutations) {
        print(j)

        t1 <- matrix(sample(tc),nrow=60)
        tf <- t1[1:30,]
        tf1 <- t1[31:60,]
        sum.table[j] <- sum(tf1-tf)

    }

通过详细检查矩阵,我注意到对于old1和gl1,从EDSS.0.0到EDSS.9.5,该值应该增加(例如,对于gl1从0.91到10),对于y,该值应该减小(例如,gl1从0.91到0.07)。

但是,我上面的方法是不正确的,因为在分配值时没有考虑相关性。 任何想法如何将值分配给新矩阵但遵循相似的模式?

非常感谢...

如果您假设数据是多元高斯的,则可以

sample_similar_patern <- function(mat) {
  MASS::mvrnorm(n = nrow(mat), mu = colMeans(mat), Sigma = cov(mat))
}

for(j in 1:n.permutations) {
  print(j)

  tf <- sample_similar_patern(gl1)
  tf1 <- sample_similar_patern(old1)

  sum.table[j] <- sum(tf1-tf)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM