在这里只是一个简单的问题:我创建了一个充满随机数的矩阵,其中每一行的总和为100。但是,它包含负数。我希望它使矩阵在每行中仅包含0到100之间的正数。
我尝试了以下功能:
matrix <- t(replicate(30,{x <- runif(3, 0, 50); y <- c(x, 100 - sum(x)); sample(y/sum(y) * 100)}))
我尝试更改最小值,现在应该等于0(最大值为50),但这没有用。我想念什么?
谢谢。
答案 0 :(得分:0)
先缩放然后再sample
。
mat <- t(replicate(30, {
x <- runif(4, 0, 50)
sample(x/sum(x) * 100)
}))
any(mat < 0)
#[1] FALSE
all(rowSums(mat) == 100)
#[1] TRUE
我将矩阵名称更改为mat
,因为matrix
是基本R函数的名称。