Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre matrices y vectores en la memoria en lenguaje R

La diferencia entre matrices y vectores en la memoria en lenguaje R

La diferencia entre matrices y vectores en lenguaje R

Vectores

Cuando se crean inicialmente, el sistema asignará suficiente espacio y los valores correspondientes a los subíndices no asignados se reemplazarán con NA. entonces el vector no está restringido por exceso de subíndice, por ejemplo

gt; x

[1] 1 2

gt; >

[1] 2

gt; x[100]

[1] NA longitud(x)

[1] 2

gt; x[100]

[1] NA

gt; longitud(x)

[1] 2

gt; x[100]=3

gt; length(x)

[1] 100

Se dan dos al crear el número x, entonces la longitud es 2. Sin embargo, el valor x[100] indica que NA no es un cruce de subíndices, y cuando se asigna x[100]=3, la longitud de x se convierte en 100.

La ventaja de este atributo es que se puede utilizar para reemplazar declaraciones de reasignación de vectores, como

gt;xlt;-c(x, 2)

Puedes usar la siguiente declaración en su lugar:

gt;x[length(x) 1]=2

La ventaja de esto es que no hay necesidad de reasignar el valor , no es necesario reasignar memoria, por lo que la eficiencia del programa se puede mejorar enormemente, por ejemplo:

gt; create_vector2lt;

gh=c()

para(i en 1:k){

gh=c(gh, i)

}

return(gh)

}

gt; create_ vector1lt;-function(k)

{

gh= c()

gh[1:k]=1:k

return(gh)

}

Los anteriores son los dos funciones que crean vectores y su tiempo de ejecución Los valores medidos son los siguientes:

gt; system.time(create_vector1(10000))#Crear vector de longitud 10000, función 1 tiempo de ejecución

Sistema de usuario transcurrido

0 0 0

gt; system.time(create_vector2(10000))#Crear vector de longitud 10000, tiempo de ejecución de la función 2

Paso del sistema de usuario

0.11 0.00 0.11

gt; system.time(create_vector1(100000))#Crear vector de longitud 100000, tiempo de ejecución de la función 1

Paso del sistema de usuario

0 0 0

gt; system.time(create_vector2(100000))#Crear vector de longitud 100000, tiempo de ejecución de la función 1

Paso del sistema de usuario

11.48 0.01 11.71

Se puede observar que la función 1 se ejecuta significativamente más rápido que la función 2. La función 1 tiene esencialmente un tiempo de ejecución nulo.

Matrix

Matrix no tiene esta característica; el espacio de memoria de la matriz es el tamaño del espacio de creación inicial. Una vez determinado, sólo podrá modificarse mediante reasignación. Por lo tanto, pueden producirse errores como subíndices fuera de límites.