【问题标题】:Randomly sample columns of a matrix with replacement, then sample elements of a vector in the same order - R随机采样矩阵的列并替换,然后以相同的顺序采样向量的元素 - R
【发布时间】:2017-09-07 17:40:39
【问题描述】:

我正在对社区相似性值进行引导分析。我有一个物种计数矩阵,其中的列代表独特的样本,而行代表独特的物种。这是一个例子:

#generate a matrix with 20 columns, 30 rows, random values
set.seed(69) #for reproducibility.
otu <-matrix(rpois(20*30, lambda = 2), ncol=20) 

我有两个向量是与独特样本相关的环境协变量。因此,每个向量的长度都是 20。

v1 <- rnorm(20)
v2 <- rnorm(20)

我想创建一个新的物种观察矩阵,随机采样otu 矩阵的列,并进行替换。我可以很容易地做到这一点。

#randomnly sample the columns of the otu matrix with replacement.
otu.boot <- otu[,sample(ncol(otu),size=ncol(otu),replace=TRUE)]

我的问题是,我怎样才能以与替换矩阵随机抽样相同的顺序对向量v1v2 进行抽样?

【问题讨论】:

  • myOrder &lt;- sample(ncol(otu),size=ncol(otu),replace=TRUE) 然后是 otu.boot &lt;- otu[, myOrder]v1[myOrder],然后是 v2[myOrder]

标签: r random


【解决方案1】:

遵循@lmo 在 cmets 中的建议:

#establish a sample order with replacement.
 myOrder <- sample(ncol(otu), replace = T)

#go ahead and submsample both the otu matrix and vectors in that order.
otu.boot <- otu[,myOrder]
 v1.boot <-  v1[myOrder]
 v2.boot <-  v2[myOrder]

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多