根据索引列创建具有概率的矩阵

时间:2018-02-18 09:07:44

标签: r matrix indexing

如何创建一个10x10的矩阵,只有1个(头)和0个(尾部),磁头的概率是1除以列的索引。

我尝试了几件事,但它不起作用,真是令人沮丧。我尝试用vector和for循环来做它。

  mat <- matrix(sample(c(0,1), 100, replace=TRUE, prob=c(1/h, 1-(1/h)), 10))

但现在唯一的问题是如何定义h。

1 个答案:

答案 0 :(得分:1)

以下是使用sapply

的选项
n_col <- 10
n_row <- 10
mat <- matrix(nrow = n_row,
              ncol = n_col)

set.seed(1)
sapply(1:n_col, function(x) {
  mat[, x] <- sample(x = c(1, 0),
                     size = n_row,
                     replace = TRUE,
                     prob = c(1/x, 1 - 1/x))
})
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    1    0    1    0    1    0    1    0    0     0
# [2,]    1    0    0    0    0    1    0    0    0     0
# [3,]    1    1    0    0    0    0    0    0    0     0
# [4,]    1    0    0    0    0    0    0    0    0     0
# [5,]    1    1    0    1    0    0    0    0    0     0
# [6,]    1    0    0    0    0    0    0    1    0     0
# [7,]    1    1    0    1    0    0    0    0    0     0
# [8,]    1    1    0    0    0    0    0    0    0     0
# [9,]    1    0    1    0    0    0    0    0    0     0
#[10,]    1    1    0    0    0    0    1    1    0     0

希望它有所帮助。