2017-05-31 5 views
-2

Ich habe eine Liste mit einheitlicher Größe wie folgt. Ich möchte die Werte für die Schlüssel extrahieren. Wie mache ich es?Wie erhalte ich Werte aus einer Liste?

Ich habe den Schlüssel isoliert von names(allsum) mit denen allsum wie diese

`$1999 
[1] 7332967 

$2002 
[1] 5635780 

$2005 
[1] 5454703 

$2008 
[1] 3464206` 

I [7332967, 5635780, 5454703, 3464206] als Ausgabe wollen aussieht. Ich habe versucht aber eine schwache Intuition. Bitte helfen Sie.

for(a in allsum) { 
    print(a[[1]]) 
} 

Ich versuchte dies, es funktioniert, aber ich möchte wissen, ob wir es mit einer Funktion oder ohne explizite Looping tun können.

Ich habe versucht, unter Verwendung unlist Nach was

c1 <- unlist(allsum) 
#1999 2002 2005 2008 
#7332967 5635780 5454703 3464206 

passiert, ich brauche nur die grossen Zahlen. Wie extrahiere ich?

+2

Wenn Sie 'lapply' und diese als eine Ausgabe erhalten, sollten Sie mit [' sapply'] (https://stackoverflow.com/a/7141669/1030110). – m0nhawk

+0

Was man mit 'v1 <- unlist (allsum) bekommt, ist ein benannter Vektor, der immer noch ein numerischer Vektor ist. Zum Beispiel können Sie 'v1 + 1000' versuchen oder' as.data.frame (v1) 'oder' names (v1) 'und' unname (v1) ' – Sotos

+0

Perfect @Sotos I thing unname() ist das Richtige machen!! Vielen Dank!! –

Antwort

2

Was

allsum <- list(`1999` = 7332967, `2002` = 5635780, 
       `2005` = 5454703, `2008` = 3464206) 

paste(unlist(allsum)) 
# [1] "7332967" "5635780" "5454703" "3464206" 

Edit:

Wie bereits in den Kommentaren aus, wird paste Konvertiere die numerischen Werte in Strings.

können Sie entweder das Problem lösen, indem paste(unlist(allsum)) mit erstellen:

as.numeric(paste(unlist(allsum)) 
# [1] 7332967 5635780 5454703 3464206 

Oder diese Frage ganz vermeiden, indem Sie Sotos' Vorschlag in den Kommentaren:

unname(unlist(allsum)) 
# [1] 7332967 5635780 5454703 3464206 
+0

Funktioniert gut !! Vielen Dank Könnten Sie bitte erklären, wie es funktioniert, nur mit 'unlist 'wir bekommen nur die Schlüssel und Werte –

+1

Ich würde das nicht empfehlen. Es konvertiert die Werte in Zeichen. Warum nicht einfach "unname"? – Sotos

0

zu erhalten, die Werte der Liste als Vektor, sollten Sie tun:

unlist(allsum) 
+0

Ich benutzte die unlist und bekam die obige Ausgabe –

2

Bitte versuchen

as.integer(allsum) 
#[1] 7332967 5635780 5454703 3464206 
2

@Sotos vielen Dank.

Ich denke, ich war nur auf der Suche nach diesem !!

unname(unlist(allsum))

Verwandte Themen