2016-04-23 14 views
0

Ich habe schon so viel Zeit verloren, aber ich verstehe es nicht.Nutze Zeichenkette als Funktionsargument R

Kann ein String als Argument in einer Funktion verwendet werden?

Mein String ist definded als:

mergesetting <- "all = FALSE" 

(Manchmal verwende ich "all.y = TRUE" oder "all.x = TRUE" statt)

Ich habe versucht, dass String als einstellen Argument in die folgende Funktion:

merged = merge.data.frame(x = DataframeA ,y = DataframeB ,by = "date_new", mergesetting) 

Aber ich eine Fehlermeldung erhalten: Fehler in fix.by (by.x, x)

T er Funktion funktioniert, wenn ich das Argument direkt:

merged = merge.data.frame(x = DataframeA,y = DataframeB,by = "date_new", all = FALSE) 

Neben zwei anderen auf Use character string as function argument gefunden Ansätze funktionierten nicht:

L<- list(x = DataframeA,y = DataframeB,by = "date_new", mergesetting) 
    merged <- do.call(merge.data.frame, L) 

Jede Hilfe ist sehr geschätzt.

+0

Mögliche Duplikat [Use Zeichenfolge als Funktionsargument] (http: // stackoverflow.com/questions/7836972/use-character-string-as-function-argument) – maRtin

Antwort

0

Nicht sicher der Punkt aber, wenn Sie

Say dfA eine Liste mit Ihren Daten und Argumenten haben, ist dieser Datenrahmen kable(head(dfA)) |dates | datum| |:----------|-----:| |2010-05-11 | 1130| |2010-05-12 | 1558| |2010-05-13 | 1126| |2010-05-14 | 131| |2010-05-15 | 2223| |2010-05-16 | 4005|

und dfb ist dies ...

kable(head(dfB)) |dates | datum| |:----------|-----:| |2010-05-11 | 3256| |2010-05-12 | 50| |2010-05-13 | 2280| |2010-05-14 | 4981| |2010-05-15 | 2117| |2010-05-16 | 791|

Ihre Voreinstellungsliste:

arg.li <- list(dfA = dfA,dfB = dfB,all = T,by = 'dates')

Der Wrapper für die Listenfunktion ...

f <- function(x)do.call('merge.data.frame',list(x = x$dfA,y = x$dfB,all = x$all))

Ergebnisse in:

kable(summary(f(arg.li))) | | dates | datum | |:--|:------------------|:------------| | |Min. :2010-05-11 |Min. : 24 | | |1st Qu.:2010-09-03 |1st Qu.:1288 | | |Median :2010-12-28 |Median :2520 | | |Mean :2011-01-09 |Mean :2536 | | |3rd Qu.:2011-04-22 |3rd Qu.:3785 | | |Max. :2011-12-01 |Max. :5000 |