2012-06-25 19 views
5

¿Hay un tipo R equivalente al tipo de estructura Matlab?R equivalente a la estructura MATLAB?

Tengo algunos vectores nombrados y trato de almacenarlos en un marco de datos. Idealmente, simplemente accedería a un elemento de un objeto y devolvería los vectores nombrados (como una estructura en Matlab). Siento que usar un marco de datos no es lo correcto ya que puede almacenar los valores de los vectores nombrados pero no los nombres cuando difieren de un vector a otro.

Más en general, ¿es posible almacenar una gran cantidad de objetos diferentes en uno solo en R?

Editar: Como dijo Joran, creo que list hace el trabajo.

l = list() 
l$vec1 = namedVector1 
l$vec2 = namedVector2 
... 

Si tengo una lista de nombres

name1 = 'vec1' 
name2 = 'vec2' 

¿Hay alguna manera que el intérprete entienda que cuando se utiliza un nombre de variable como nombre1, no me refiero al nombre de variable, pero a ¿su contenido? He intentado get(name1) pero no funciona.

+3

Estoy seguro de que exactamente en Matlab estás hablando, pero tus opciones en R son básicamente: vectores, listas, matrices, marcos de datos, o (si quieres conseguir ambientes sofisticados). Supongo que si quieres una lista. – joran

+0

@joran: [Estructura de Matlab] (http://www.mathworks.nl/help/techdoc/ref/struct.html) – Junuxx

+0

Estoy seguro de que @joran tiene razón (una 'lista' es lo que quieres), pero estoy confundido por el bit sobre "pero no los nombres cuando difieren de un vector a otro". ¿A qué nombres te refieres? –

Respuesta

5

todavía podría estar equivocado acerca de lo que estás tratando de hacer, pero creo que esto es lo mejor que vas a conseguir en términos de acceso a cada elemento de la lista por su nombre:

l <- list(a= 1:3,b = 1:10) 
> ind <- "a" 
> l[[ind]] 
[1] 1 2 3 

A saber, Vas a tener que usar [[ explícitamente.

+0

Y FWIW, 'get (ind, pos = l)' también funciona. (Sin embargo, no estoy seguro de dónde sería mejor que 'l [[ind]]') –

+0

'get (ind, pos = l)' devolvería '" a "' pero cómo se usaría para acceder a 'l $ a ¿? – Youcha

+0

@Youcha No, en realidad, devuelve lo mismo (o al menos debería, y lo hace para mí). – joran

Cuestiones relacionadas