2016-05-06 14 views
0

Ich bekomme die Namen der Tabellen aus einer Datenbank und ich möchte alle Daten aus jeder Tabelle auswählen und einen Datenrahmen automatisch erstellen. Der CodeR Werte im Vektor verwenden, um Name des Datenrahmens zu werden

nm = dbListTables(connection) 

erzeugt einen Vektor wie:

[1] "Account"       "Credit__Amortization_Payment__c" 
[3] "Credit__Amortization_Schedule__c" "Credit__Loan_Payment__c"   
[5] "Credit__Loan__c" 

Als Beispiel

nm = c("Account", "Credit__Amortization_Payment__c", "Credit__Amortization_Schedule__c", "Credit__Loan_Payment__c", "Credit__Loan__c") 

ich eine Liste einer Abfrage für jeden Wert in einer Schleife zu erstellen:

qry <- list() 
for (i in 1:length(nm)) { 
    qry[i] <- paste0("select * from ", nm[i]) 
    } 

Dann kann ich nicht herausfinden, wie Sie die na speichern Ich des Datenrahmens als die Werte vom Vektor, also muss ich es manuell so eintippen, aber ich würde es nur gerne durchschleifen, indem ich einen Datenrahmen mit genau dem gleichen Namen und der gleichen Struktur aus der Liste nm speichere.

q = paste0(qry[1]) 
rs <- dbSendQuery(con, q) 
Account <- dbFetch(rs, n=-1) 

ich wiederhole es hier für jeden Wert in dem Vektor manuell, aber ich würde das so automatisch auf den Werten in nm = dbListTables (Verbindung) auf der Basis tun

q = paste0(qry[3]) 
rs <- dbSendQuery(con, q) 
Credit__Amortization_Schedule__c <- dbFetch(rs, n=-1) 
+0

Ich würde den Datenrahmen mag wie nm genannt werden [i] nm [1] = Konto, nm [3] = Credit__Amortization_Schedule__c –

+0

hat einen Blick auf '? SetNames' – Benjamin

Antwort

0

Ich denke, assign ist, was Sie suchen, z

> assign("x", 5) 
> x 
[1] 5 

In Ihrem Fall z.B. für Abfrage 1

q <- paste0(qry[1]) 
rs <- dbSendQuery(con, q) 
assign(nm[1], dbFetch(rs, n=-1)) 

sollte funktionieren. Werfen Sie auch einen Blick auf die R FAQ.

+0

Das funktioniert gut. Ich konnte die Frage nicht richtig stellen, um den Weg zu finden, den ich zuordnen könnte. Jetzt läuft alles in einer Schleife: für (i in 1: Länge (nm)) { qry [i] <- paste0 ("Auswahl * von", nm [i]) q = paste0 (qry [i]) rs <- dbSendQuery (con, q) zuweisen (nm [i], dbFetch (rs, n = -1)) } –