Ich weiß nicht, ob es sich lohnt, dies als Antwort hinzuzufügen oder ob ein Kommentar in Ordnung wäre, aber ich habe eine Funktion namens geschrieben moveme
, mit der Sie mit der von Ihnen beschriebenen Sprache tun können, was Sie wollen. Sie finden die Funktion unter folgender Antwort: https://stackoverflow.com/a/18540144/1270695
Es funktioniert auf names
Ihrem data.frame
und erzeugt einen Zeichenvektor, mit dem Sie Ihre Spalten neu anordnen können:
mydf <- data.frame(matrix(1:12, ncol = 4))
mydf
moveme(names(mydf), "X4 first")
moveme(names(mydf), "X4 first; X1 last")
mydf[moveme(names(mydf), "X4 first")]
Wenn Sie solche Dinge durcheinander bringen, schlage ich vor, Ihre data.frame
in a umzuwandeln data.table
und setcolorder
(mit meiner moveme
Funktion, wenn Sie möchten) die Änderung anhand der Referenz vorzunehmen.
In Ihrer Frage haben Sie auch erwähnt "Ich möchte nur eine Spalte auswählen und an den Anfang verschieben". Wenn es sich um eine beliebige Spalte handelt und nicht speziell um die letzte, können Sie auch die Verwendung in Betracht ziehen setdiff
.
Stellen Sie sich vor, Sie arbeiten mit dem Datensatz "mtcars" und möchten die Spalte "am" an den Anfang verschieben.
x <- "am"
mtcars[c(x, setdiff(names(mtcars), x))]