Seite 1 von 1

data.frames mit dynamischem Namen nutzen

Verfasst: Fr Dez 02, 2022 2:22 pm
von pfischer
Liebes Forum,
eine scheinbar triviale Frage, aber ich sehe offenbar den Wald nicht vor lauter Bäumen.

Ich habe 10 data.frames die heissen tmp_lead_1, tmp_lead_2.... tmp_lead_10

In einer Funktion muss ich nun einen dieser data.frames auswählen, sagen wir tmp_lead_4 und als data_frame "act_lead" zur Vrefügung stellen (kopieren) ohne den ursprünglichen tmp_lead_4 zu löschen. Die Zahl im Namen des source-df (tmp_lead_#) steht bereit als Variable m (im Beispiel also 4)

Ich habe folgendes versucht

act_lead <- as.data.frame(paste0("tmp_lead_",m)) -> ich bekomme einen df mit einer Zeile/Spalte die beinhaltet "tmp_lead_4".
assign(act_lead, paste0("tmp_lead_",m)) -> Exakt das selbe, ich bekomme einen df mit einer Zeile/Spalte die beinhaltet "tmp_lead_4".

Das Netz gibt viele Lösungen an wie ich den neuen Variablennamen "act_lead" mit einer Laufvariablen versehen kann aber nicht das Gegenteil, wie ich eine Laufvariable im source data.framenehmen kann.- Für einen Tip wäre ich sehr dankbar.
VG Philipp

Re: data.frames mit dynamischem namen nutzen

Verfasst: Fr Dez 02, 2022 6:21 pm
von bigben
Hallo Philipp,
pfischer hat geschrieben: Fr Dez 02, 2022 2:22 pmIch habe 10 data.frames die heissen tmp_lead_1, tmp_lead_2.... tmp_lead_10
Bleibt es bei diesen zehn Data Frames, oder muss das erweiterbar auf große Zahlen oder beliebige Zahlen sein? Wenn es bei den zehn bleibt, würde ich ausnahmsweise per copy&paste programmieren und die alle in eine Liste stecken:

Code: Alles auswählen

tmp_lead <- list()
tmp_lead[[1]] <- tmp_lead_1
tmp_lead[[2]] <- tmp_lead_2
tmp_lead[[3]] <- tmp_lead_3
tmp_lead[[4]] <- tmp_lead_4
tmp_lead[[5]] <- tmp_lead_5
tmp_lead[[6]] <- tmp_lead_6
tmp_lead[[7]] <- tmp_lead_7
In einer Funktion muss ich nun einen dieser data.frames auswählen, sagen wir tmp_lead_4 und als data_frame "act_lead" zur Vrefügung stellen (kopieren) ohne den ursprünglichen tmp_lead_4 zu löschen. Die Zahl im Namen des source-df (tmp_lead_#) steht bereit als Variable m (im Beispiel also 4)
Das wird mit der Liste zu einem ganz einfachen

Code: Alles auswählen

act_lead <- tmp_lead[[m]]
Das ganze Gebastel mit assign() kannst Du Dir dann sparen. Ein funktionierendes Minimalbeispiel könnte so aussehen:

Code: Alles auswählen

alle <- list()
alle[[1]] <- iris
alle[[2]] <- mtcars
alle[[3]] <- iris
alle[[4]] <- iris

m <- 2
head(alle[[m]])
LG,
Bernhard

Re: data.frames mit dynamischem Namen nutzen

Verfasst: Sa Dez 03, 2022 10:00 am
von Athomas
Ich habe 10 data.frames die heissen tmp_lead_1, tmp_lead_2.... tmp_lead_10
Woher kommen denn diese Dataframes - irgendwer muss sie doch erzeugt/eingelesen und dabei diese unhandlichen Namen vergeben haben!?

Re: data.frames mit dynamischem Namen nutzen

Verfasst: Mo Dez 05, 2022 3:34 pm
von pfischer
Hallo Zusammen,
vielen Dank für den Tip mit der list(). Das hat prima funktioniert. Ich konnte die liste schon beim anlegen der files erzeugen so dass auch die Anzahl der Elemente der Liste dynamisch sin. Perfekt und Danke.
VG Philipp