2017-10-06 1 views
0

Ich habe nur eine einfache Funktion-Frage für den Export von Datenrahmen zu Access.R: Exportiere Datenrahmen in einer Funktion

foo_export <- function(Export_table){ 
     channel <- odbcDriverConnect(Path) 
     sqlSave(channel,dat=Export_table) 
     close(channel) 
} 
foo_export(Test) 

Wenn ich bin die data.frame „Test“ als Argument für die Funktion verwenden, so dass, wenn ich bin foo_export läuft (Test) die neue Tabelle in MS-Access ist Export_table genannt und nicht als meine angegebener Name (Test). Ich habe versucht, "Tabellenname" in SQLSave zu verwenden, aber es funktioniert nicht. Ich lese, dass Funktionen nur Kopien von Datenrahmen und nicht das Original nehmen. Ist das das Problem?

Antwort

1

Es ist ein optionales Argument einen Tabellennamen im Code zu liefern wie:

sqlSave(channel,dat=Export_table, tablename = 'foo') 

die beste Option, um sicherzustellen, dass es der richtige Name ist, ist so etwas wie:

foo_export <- function(Export_table, table_name){ 
# table_name = character 
    channel <- odbcDriverConnect(Path) 
    sqlSave(channel,dat=Export_table, tablename = table_name) 
    close(channel) 
} 
foo_export(Test) 

Wie

foo_export(Test, 'Test') 

Hoffe, dass hilft!

0

Wenn Sie den Namen des R Objekt wollte programmatisch an die SQL-Engine übergeben werden, versuchen Sie dann etwas wie folgt aus:

foo_export <- function(Export_table){ 
     channel <- odbcDriverConnect(Path) 
     t_name <- deparse(substitute(Export_table)) 
     sqlSave(channel,dat=Export_table, tablename=t_name) 
     close(channel) 
}