data.frames mit dynamischem Namen nutzen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
pfischer
Beiträge: 31
Registriert: Mi Mär 29, 2017 5:31 pm

data.frames mit dynamischem Namen nutzen

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: data.frames mit dynamischem namen nutzen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: data.frames mit dynamischem Namen nutzen

Beitrag 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!?
pfischer
Beiträge: 31
Registriert: Mi Mär 29, 2017 5:31 pm

Re: data.frames mit dynamischem Namen nutzen

Beitrag 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
Antworten