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

hhh*_*hhh 27 r matrix

expand.grid(i=rexp(5,rate=0.1))
Run Code Online (Sandbox Code Playgroud)

它只创建了一个col,但是有一些方法可以轻松地将它乘以5 cols吗?我的意思是matlab这样做的事情rand('exp', 0.1, 10,20)(创建一个指数分布随机数的矩阵,平均值为0.1×10×20),怎么样?

Dav*_*son 35

使用矩阵函数:

matrix(rexp(200, rate=.1), ncol=20)
Run Code Online (Sandbox Code Playgroud)

ETA:如果你想这样做而不重复200,你可以定义一个函数:

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)
Run Code Online (Sandbox Code Playgroud)

x因此变成你所谈论的虚拟变量.这就是你要找的东西吗?

  • 你的意思是"必须有某种方式使Matlab语法在R中完全*相同吗?" 没有. (5认同)
  • 我很高兴这就是你要找的东西,嗯.但是从各方面来说,你的问题不再是语言,而是因为语言可能缺少内置于另一种语言的功能.通常情况就是如此. (3认同)

Ste*_*edy 15

你可以这样做:

matrix(rexp(200), 10)
Run Code Online (Sandbox Code Playgroud)

当然可以使用您想要的任何分发.


Jus*_*tin 9

?matrix会告诉你很多!并且rexp是生成随机指数分布的函数.

mat <- matrix(data = rexp(200, rate = 10), nrow = 10, ncol = 20)
Run Code Online (Sandbox Code Playgroud)


小智 6

用这个:

matris=matrix(rnorm(10),5,20)
Run Code Online (Sandbox Code Playgroud)

  • 欢迎使用堆栈溢出!虽然您可能已经解决了该用户的问题,但纯代码的答案对将来遇到此问题的用户并没有太大帮助。请编辑您的答案以解释为什么您的代码解决了原始问题。 (2认同)