2012-06-25 10 views
5

Gibt es einen R-Typ, der dem Matlab-Strukturtyp entspricht?R entspricht der MATLAB-Struktur?

Ich habe ein paar benannte Vektoren und ich versuche, sie in einem Datenrahmen zu speichern. Idealerweise würde ich einfach auf ein Element eines Objekts zugreifen und es würde die benannten Vektoren (wie eine Struktur in Matlab) zurückgeben. Ich finde, dass die Verwendung eines Datenrahmens nicht das Richtige ist, da es die Werte der benannten Vektoren speichern kann, aber nicht die Namen, wenn sie sich von einem Vektor zum anderen unterscheiden.

Allgemeiner ist es möglich, eine Reihe von verschiedenen Objekten in einem einzigen in R zu speichern?

Bearbeiten: Wie Joran sagte, denke ich, dass list macht den Job.

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

Wenn ich eine Liste von Namen haben

name1 = 'vec1' 
name2 = 'vec2' 

ist es eine Möglichkeit, für die Dolmetscher zu verstehen, dass, wenn ich einen Variablennamen wie name1 verwenden, ich bin nicht an den Variablennamen bezieht, sondern auf Sein Inhalt? Ich habe versucht get(name1), aber es funktioniert nicht.

+3

Ich bin mir sicher, was genau in Matlab Sie sprechen, aber Ihre Optionen in R sind im Grunde: Vektoren, Listen, Matrizen, Datenrahmen oder (wenn Sie Lust haben) Umgebungen. Ich schätze, wenn Sie eine Liste wünschen. – joran

+0

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

+0

Ich bin sicher, dass @joran recht hat (über eine 'liste', was du willst), aber ich bin verwirrt über das bisschen über "aber nicht die Namen, wenn die von einem Vektor zum anderen unterscheiden". Auf welche Namen beziehen Sie sich? –

Antwort

5

Ich konnte immer noch falsch sein, was Sie zu tun versuchen, aber ich denke, das ist das Beste, was Sie in Bezug auf den Zugriff auf jedes Listenelement nach dem Namen zu bekommen sind:

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

Das heißt, Sie müssen [[ explizit verwenden.

+0

Und FWIW, 'get (ind, pos = l)' funktioniert auch. (Nicht sicher, wo das besser wäre als "l [[ind]]".) –

+0

'get (ind, pos = l)' würde '' a ''zurückgeben, aber wie würde man das verwenden, um auf' l $ a zuzugreifen '? – Youcha

+0

@Youcha Nein, eigentlich gibt es das gleiche zurück (oder zumindest sollte es, und tut es für mich). – joran

Verwandte Themen