如何用R中的随机数填充矩阵?

如何用R中的随机数填充矩阵?,r,matrix,R,Matrix,它只创建一个列,但是有没有办法将它轻松地乘以5列?我指的是matlab做事情的方式,比如兰德('exp',0.1,10,20)(用平均值为10x20的0.1的指数分布随机数创建矩阵),如何做?你可以做如下事情: expand.grid(i=rexp(5,rate=0.1)) 当然,还可以使用您想要的任何分发版本。使用以下功能: matrix(rexp(200), 10) ETA:如果不想重复200,可以定义一个函数: matrix(rexp(200, rate=.1), ncol=20)

它只创建一个列,但是有没有办法将它轻松地乘以5列?我指的是matlab做事情的方式,比如兰德('exp',0.1,10,20)(用平均值为10x20的0.1的指数分布随机数创建矩阵),如何做?

你可以做如下事情:

expand.grid(i=rexp(5,rate=0.1))
当然,还可以使用您想要的任何分发版本。

使用以下功能:

matrix(rexp(200), 10)
ETA:如果不想重复200,可以定义一个函数:

matrix(rexp(200, rate=.1), ncol=20)

因此,
x
就成了您所说的虚拟变量。这就是你要找的吗?

?矩阵将告诉你很多!而
rexp
是生成随机指数分布的函数

fill.matrix = function(expr, nrow=1, ncol=1) {
    matrix(eval(expr, envir=list(x=nrow*ncol)), nrow=nrow, ncol=ncol)
}

fill.matrix(rexp(x, rate=.1), nrow=10, ncol=20)

mat这里有一个简单的解决方案:

mat <- matrix(data = rexp(200, rate = 10), nrow = 10, ncol = 20)
使用以下命令:

replicate(rexp(10),20)

您可以在以下代码行中生成均匀分布的10×15随机矩阵:

matris=matrix(rnorm(10),5,20)

…为什么在这个问题上投反对票?我喜欢简单而愚蠢的问题,人们可以从这些问题中学到很多令人惊讶的习惯用语——看看有多少问题使用了稍微不同的风格,很有趣。我没有投反对票,但鼠标悬停的文本中包含了一句话“没有显示任何研究成果”。所以我猜可能有人认为即使是最基础的研究也能找到这个问题的答案。(顺便说一句,目前的答案没有什么有意义的区别。我正在考虑删除我的答案以减少混乱。)我同意——在找到
matrix
之前,很难看出有人是如何找到
expand.grid
,比如说,
rnorm
。也许OP可以说“我找不到关于创建矩阵的文档”这样的话来说明真正的问题所在……是的,这很方便,用过一次,但马上就忘了——出于某种原因,我发现更容易记住M风格的方法,因为它更显式——它隐式地包含了大量内容(您需要确保计数匹配)……这里有一些我从未理解过的东西,术语
rate
——为什么它的平均值不是0.1?好的,
——使用rate'rate'(即,表示'1/rate')。
,这是手册中从未理解的一部分:它是否表示$\mu=\frac{1}{rate}$?是的,它告诉了我们很多,但是用一种模糊的方式。现在回到这个答案——有没有办法隐式rm 200?M风格的做事方式的意图是显而易见的。我的意思是像这样的
矩阵(平均值=0.1,dims=c(20,30),type=c('random','exp'))
?关于分布的参数,我相信这只是命名法。我们必须选择一个!很多分布都有不止一个参数命名法。你知道200是否有填充标志吗?我的意思是创建这样的矩阵
矩阵(rexp(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?在快速原型制作过程中,我往往只会忘记200件事——犯混乱/新手式的错误。这是接近+1的好尝试!对不起,我是个完美主义者,但我在想另一种方法。必须有某种方式保持结构…你的意思是“必须有某种方式使Matlab语法在R中完全相同”?没有。对不起,但是
matrix(rexp(matrix(nrow=2,ncol=3,rate=.1),nrow=2,ncol=3)
保持了结构,所以至少有一种外观不好的方法可以工作——现在有什么方法可以
重用逻辑了吗?听着,一个人需要在外部/内部的两个位置重用逻辑,只需操作它两次——任何用于此重复的现成函数或某个XYZapply黑客?我很高兴这就是你想要的,hhh。但无论如何,您的问题不再是语言本身,而是一种语言可能缺少另一种语言的内置功能。通常情况就是这样。欢迎使用堆栈溢出!虽然您可能已经解决了该用户的问题,但仅使用代码的答案对将来遇到此问题的用户没有多大帮助。请编辑您的答案,解释您的代码解决原始问题的原因。
matrix(runif(10*15), nrow = 10, ncol = 15)