Me gustaría aleatoriamente reorganizar el orden de los números en un vector, en una simple línea de comando?

A mi en particular el vector V tiene 150 entradas para cada valor de 1 a 10:

V <- rep(1:10, each=150)
  • Las respuestas aquí justamente su punto de hacia sample. Usted puede ser que desee comprobar hacia fuera las advertencias aquí para algunos de los peligros que van junto con el solo uso de la muestra como es.
  • el tl;dr es tan largo como la longitud del vector está garantizado para ser >1, funciona.
  • El tl;Dr es que es peligroso porque uno se siente cómodo con ella y luego cuando finalmente es de longitud 1 de la picadura.
  • Yo había leído eso, pero nadie aún modificado base::sample para forzar el uso de seq_along. Además no veo donde sample/sample.int llamada base::seq() de todos modos?
InformationsquelleAutor user1723765 | 2012-12-07

2 Comentarios

  1. 99

    Sí.

    sample(V)

    De ?sample:

    Por ‘ejemplo’ el valor predeterminado para el ‘tamaño’ es el número de elementos
    inferido a partir del primer argumento, de modo que » la muestra(x)’ genera un
    permutación aleatoria de los elementos de ‘x’ (o ‘1:x’).

    • ¿Cómo puedo shuffle [1,1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5] como para obtener algo como esto: [5, 5, 3, 3, 3, 3, 1, 1, 2, 4, 4, 4]? de tal manera que cada elemento puede cambiar aleatoriamente a otro, pero con el mantenimiento de la cantidad de cada elemento constante?
    • de esto ya hace lo que quiere; el size argumento de sample valores predeterminados para size <- length(x). (Tipo sample para ver el código que hace esto.)
    • yup! Gracias!
  2. 23

    Uso sample función

    V<-rep(1:10, each=150)
    
    set.seed(001) # just to make it reproducible
    sample(V)
    • replace=FALSE es el valor predeterminado.
    • tienes razón
    • esto hace que una de 150 valores de la original de 1500
    • acaba de decir @user1723765 no es correcto – esto funciona perfectamente

Dejar respuesta

Please enter your comment!
Please enter your name here