2016-03-29 6 views
2

Ich habe eine ListeR select-Element aus der Liste mit Namen Zeichenfolge

myList=list(a=1,b=2) 
> names(myList) 
[1] "a" "b" 

I-Element von myList von string name auswählen möchten.

for (name in names(myList)){ 
    print (myList$name) 
} 

Dies funktioniert nicht, da name = "a", "b". meine Auswahlleitung sagen eigentlich myList $ "a" und myList $ "b" .Ich auch versucht:

print (myList$get(name)) 
print (get(paste(myList$,name,sep=""))) 

aber hat nicht funktioniert. Vielen Dank, wenn Sie mir sagen könnten, wie es geht.

+0

Try 'myList [[name]]'. Außerdem benötigt 'print' Klammern in R, wie' print (x) 'not' print x'. – Frank

+0

versuchen Sie 'myList [[Name]]' – johannes

+0

Vielen Dank! – NewbieDave

Antwort

5

$ tut genau und teilweise Übereinstimmung, ist myList$name entspricht

`$`(myList, name) 

Wie @Frank wies darauf hin, das zweite Argument name werden nicht bewertet, sondern als eine wörtliche Zeichenfolge behandelt werden. Versuchen Sie ?`$` und sehen Sie das Dokument.

In Ihrem Beispiel. myList$name werden versuchen, für name Element suchen in myList

Deshalb sollten Sie myList[[name]]

+2

Ich denke, "für genaue Übereinstimmung" ist möglicherweise keine vollständige Erklärung. Tatsächlich unterstützt '$' partielles Matching *. Der Punkt ist, dass '$' sein zweites Argument nicht bewertet (der Teil, der auf der rechten Seite erscheint). Übrigens, um dem Backquote zu entfliehen, können Sie einen Backslash verwenden oder den Codeauszug in ein paar zusätzlichen '' 's verschachteln (obwohl ich nicht sicher bin, wie viele benötigt werden). – Frank

+1

@Frank Gut zu wissen! Danke mein Herr! – fhlgood

1

brauchen Ich glaube, Sie so etwas wie dies wollen:

for (name in names(myList)) { 
    print(myList[[name]]) 
} 
Verwandte Themen