2017-02-07 4 views
0

Ich möchte eine Liste von Datenframes in eine Liste von Datenframes konvertieren.R: Wie Liste der Namen durch Liste der Datenframes ersetzen?

Beispiel:

datalist <- list("mtcars","swiss","iris") 

Dann möchte ich so etwas wie

for(i in 1:length(datalist)) { 
datalist[[i]] <- parse(datalist[[i]]) 
} 

So tun, wenn ich laufen datalist[[i]] ich das gleiche wie dieses

> mtcars 
        mpg cyl disp hp drat wt qsec vs am gear carb 
Mazda RX4   21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 
Mazda RX4 Wag  21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 
Datsun 710   22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 

und nicht

sehen
> datalist[[i]] 
"mtcars" 
+1

'lapply (Datalist, Funktion (x) eval (as.name (x)))' tun würde. Vergessen Sie "Parse" existiert. –

Antwort

2

Betrachten get mit:

datalist <- list("mtcars","swiss","iris") 

dfList <- lapply(datalist, get) 

for(i in 1:length(dfList)) { 
    print(head(dfList[[i]])) 
} 

#     mpg cyl disp hp drat wt qsec vs am gear carb 
# Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
# Mazda RX4 Wag  21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
# Datsun 710  22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 
# Valiant   18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 

#   Fertility Agriculture Examination Education Catholic Infant.Mortality 
# Courtelary  80.2  17.0   15  12  9.96    22.2 
# Delemont   83.1  45.1   6   9 84.84    22.2 
# Franches-Mnt  92.5  39.7   5   5 93.40    20.2 
# Moutier   85.8  36.5   12   7 33.77    20.3 
# Neuveville  76.9  43.5   17  15  5.16    20.6 
# Porrentruy  76.1  35.3   9   7 90.57    26.6 

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# 1   5.1   3.5   1.4   0.2 setosa 
# 2   4.9   3.0   1.4   0.2 setosa 
# 3   4.7   3.2   1.3   0.2 setosa 
# 4   4.6   3.1   1.5   0.2 setosa 
# 5   5.0   3.6   1.4   0.2 setosa 
# 6   5.4   3.9   1.7   0.4 setosa 
1

Statt

parse(datalist[[i]]) 

Verwendung:

eval(parse(text = datalist[[i]])) 

Sie müssen die Ausgabe von Parse zu bewerten.

4

mget ist die entsprechende Funktion. Es arbeitet mit einem Zeichenvektor von Objektnamen und gibt eine Liste von Objekten zurück. Ich benutze unlist Ihre Liste, um ein Zeichen Vektor zu konvertieren:

mget(unlist(datalist)) 

Beachten Sie, dass dies nicht auf die integrierte Datenrahmen in Ihrem Beispiel arbeiten, es sei denn (a) Sie die inherits Option TRUE wie folgt festgelegt: mget(unlist(datalist), inherits = TRUE) oder (b) sie wurden bereits in die globale Umgebung geladen (z. B. mit data()).

Ein Vorteil von mget im Vergleich zu anderen hier vorgeschlagenen Antworten ist, dass die resultierende Liste mit den Namen der Objekte als Namen der Liste erstellt wird.

Verwandte Themen