R - 分别随机化矩阵中的每一行

标签 r

我正在尝试随机化一个矩阵,以便每列中的每一行都单独随机化,以便在最终矩阵中列之间没有关联。我知道我需要使用 sample() 函数和某种 for(each column) 循环,但我不太确定如何去做它。具体来说,我问如何编写一个函数来循环遍历矩阵的列并随机化每列的行。

编辑:我想要实现的目标的示例

原始矩阵:

       X1 X2 X3
    1   4  3  6
    2   7  2  4
    3   9  5  1

所需输出示例:

       X1 X2 X3
    1   7  3  1
    2   4  5  6
    3   9  2  4

如您所见,每列中的行已分别随机化。

最佳答案

如果你有一个矩阵X,你可以使用apply()(矩阵的理想选择)

apply(X, 2, sample)

示例:

X <- matrix(1:25, 5)

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    6   11   16   21
# [2,]    2    7   12   17   22
# [3,]    3    8   13   18   23
# [4,]    4    9   14   19   24
# [5,]    5   10   15   20   25

应用上面的代码给出:

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    3   10   11   16   21
# [2,]    5    8   12   20   22
# [3,]    4    9   14   18   24
# [4,]    2    6   15   19   25
# [5,]    1    7   13   17   23

我没有通过set.seed()设置随机种子,所以当你运行它时你会得到不同的结果。但您需要知道的是:结果是随机的。

如果你有一个数据框X,你最好使用sapply()

sapply(X, sample)

关于R - 分别随机化矩阵中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205835/

相关文章:

r - 使用 haven::labelled 动态创建值标签

正则表达式:在 R 中使用 `u` 标志

r - 根据周围的非缺失值有条件地替换缺失值

r - 当特定图中没有带有该标签的数据点时,如何在图中添加图例标签?

r - 使用 grep 对 data.table 中的行进行子集化,比较行内容

r - 如何有选择地将R列拆分为单独的列

r - 如何在向量中找到连续的 TRUE 值并将它们替换为 R 中连续的 TRUE 值的数量?

r - ggplot : 2 facets with multiple lines

r - 从 ggplot2 图生成栅格

r - 清除 RStudio 中所有绘图的代码