web-dev-qa-db-fra.com

Comment remplir la matrice avec des nombres aléatoires dans R?

expand.grid(i=rexp(5,rate=0.1))

Cela crée juste un col, mais y a-t-il un moyen de le multiplier facilement en 5 cols? Je veux parler de la façon de faire les choses comme Rand('exp', 0.1, 10,20) (créer une matrice avec des nombres aléatoires à distribution exponentielle avec une moyenne de 0,1 de taille 10x20), comment

24
hhh

Utilisez la fonction matrix :

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

ETA: Si vous voulez le faire sans répéter le 200, vous pouvez définir une fonction pour le faire:

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)

x devient ainsi la variable muette dont vous parlez. Est-ce ce que vous cherchez?

31
David Robinson

vous pouvez faire quelque chose comme:

matrix(rexp(200), 10)

Et bien sûr, utilisez la distribution de votre choix.

12
Stedy

?matrix vous en dit beaucoup! et rexp est la fonction permettant de générer une distribution exponentielle aléatoire.

mat <- matrix(data = rexp(200, rate = 10), nrow = 10, ncol = 20)
9
Justin

Utilisez ceci:

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

Voici une solution simple:

replicate(rexp(10),20)
0
Froblinkin