Ich möchte Eingaben an setOrder in einer Funktion übergeben. Im Idealfall möchte ich, dass die Funktion einen Datentabellennamen und einen Variablennamen in der Datentabelle annimmt, die Tabelle basierend auf der Variablen neu anordnet und dann einige andere Dinge tut.R So übergeben Sie Eingaben an setOrder in einer Funktion
Hier ist ein Beispiel für das, was ich tun möchte, das nicht funktioniert.
dt <- data.table(replicate(10,sample(0:100,1000,rep=TRUE)))
sortFunction <- function(dt,var) {
v2 <- deparse(substitute(var))
data.table::setorder(dt,v2)
return(dt)
}
sortFunction(dt, var = "V1")
Idealerweise würde Ich mag die Funktion haben, zu erkennen, dass eine Zeichenvariable dt
eine Datentabelle in der globalen Umwelt ist; d. h., sowohl dt
als auch var
würden als Zeichenvariablen übergeben und dann als Datentabelle erkannt werden, und
Es ist auch 'setorderv', so dass Sie tun können,' setorderv (dt, "V2") 'und vermeiden Sie den' Deparse (Ersatz (... ' – thelatemail
Dieser Vorschlag löst das erste Problem. Der Code' sortFunction < - Funktion (dt, var) { data.table :: setorderv (dt, var) return (dt) } sortFunction (dt, var = "V2") 'tut, was ich wollte Was den Namen übergeben. der dt in die Funktion anstelle der dt selbst? – JerryN
Ich empfehle es wirklich nicht, aber Sie könnten 'f <- Funktion (dt, var) {tmp <- get (dt, envir = .GlobalEnv); setorderv (tmp, var); tmp} 'oder etwas ähnliches – thelatemail