names(mydat)[c(name)]<-c("newname")
Daraus weiß ich, dass der Spalten- / Variablenname "Name" des Datenrahmens mydat durch "neuer Name" ersetzt wird.
Meine Frage ist, ob ich dies durch eine Schleife tun möchte, damit ich etwas habe wie:
newname1 newname2 newname3 newname4 und so weiter, wie mache ich das?
Das hat funktioniert und es hat nicht funktioniert:
for(i in 1:4){
names(mydat)[c(name)]<-c("newname"i)
}
Gibt es eine Möglichkeit, dies zu codieren? Vielen Dank an alle, die helfen konnten. Owusu Isaac
ugly_vars <- names(dplyr::select(df, starts_with("abcde_")))
names(ESM_df[ugly_vars]) <- str_c("abc_", 1:length(ugly_vars))
Antworten:
Die naheliegendste Lösung wäre, Ihren Code in for-Schleife wie folgt zu ändern:
Sie müssen jedoch klarstellen, was Ihre Variable
name
ist. Im Moment führt diese Schleife 4 Umbenennungen der einzelnen Spalte durch.Wenn sich die Namen, die Sie ändern möchten, im Vektor befinden, ist dies im Allgemeinen ein Standardverfahren für Teilmengen:
quelle
Versuchen Sie es mit
sprintf
oderpaste
wie folgt:Beachten Sie auch, dass das
names(mydat)[c(name)]
mehr oder weniger ein Unsinn ist;c(name)
ist gleichbedeutend mit dem Schreiben von justname
und bedeutet "den Wert der Variablen mit dem Namenname
" abrufen; die Klammer extrahiert mindestens Elemente von,names(mydat)
jedoch nur, wenn diename
Variable einen numerischen oder booleschen Index enthält.Wenn Sie möchten , Spalten ersetzen genannt
name
mitname1, name2, ..., nameN
, verwenden Sie etwas wie folgt aus :EDIT: Nun, wenn Sie nur doppelte Spaltennamen entfernen möchten, gibt es einen noch einfacheren Weg. R hat eine
make.names
Funktion, die dieses Problem behebt; es kann so verwendet werden:Noch kürzer, das gleiche kann nur durch Schreiben erhalten werden:
quelle
grepl
wäre in Ordnung, die allgemeinere Arbeit zu erledigen.Ich hatte das gleiche Problem und habe es mit diesem Code gelöst:
quelle