Leeren data.frame als element in Liste schreiben.

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

Leeren data.frame als element in Liste schreiben.

Beitrag von pfischer »

Liebes Forum,
ich habe mal wieder ein scheinbar einfaches Problem für das mir die Lösung fehlt. Ich schreibe in einem loop (siehe code unten) einen pro iteration m erzeugten data.frame namens qf1_dataset_agg als element in eine liste namens tmp_lead. Der df qf1_dataset_agg wird vorher in in einem anderebn lopp erzeugt. Nun kommt es vor, dass zu einem bestimmten Monat (z.B. 6) kein qf1_dataset_agg df erzeugt wird, da keine Daten da sind. Dennoch brauche ich das Element (sagen wir 6) in tmp_lead, d.h. tmp_lead[[6]] muss existieren, aber eben als leerer df. Ich habe das unten mit der Zeile
tmp_lead[[m]] <- setNames(data.frame(matrix(ncol = 4, nrow = 0)), c("datetime", "par_id", "measured_value", "kdweight"))
versucht aber es klappt nicht. Es wird nicht der df als Listenelement geschrieben sondern jede einzelne Spalte.
Wass mache ich falsch.
Bin für jede Hilfe dankbar.
Viele Grüsse, Philipp


Code: Alles auswählen

for (i in 1:12) {
  if(!exists("tmp_lead", envir = .GlobalEnv)) {
    tmp_lead <<- list()
  }

if (exists("qf1_dataset_agg")) {
  tmp_lead[[m]] <<- qf1_dataset_agg
} else {
  tmp_lead[[m]] <- setNames(data.frame(matrix(ncol = 4, nrow = 0)), c("datetime", "par_id", "measured_value", "kdweight"))
}

#  lead_qf1 <- paste("tmp_lead_",m,sep="")
#  assign(lead_qf1,qf1_dataset_agg,envir = .GlobalEnv)

saveRDS(tmp_lead, paste0(tmpdir,"/tmp_lead.Rds"))

  cat("\n\n********************************************\n")
  cat("Lead dataset 'tmp_lead' has been created for ",m,"-",y," for sensor",sensor,"for parameter",sheetname,"\n")
  cat("********************************************\n\n")
  }
Dateianhänge
tmp_lead.Rds.zip
(2.78 KiB) 20-mal heruntergeladen
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Leeren data.frame als element in Liste schreiben.

Beitrag von Athomas »

Ohne Deine Frage komplett verstanden zu haben, habe ich Google mit dem naheliegenden Suchstring "r empty data.frame" gefüttert und jede Menge Vorschläge bekommen.

Gleich der erste https://sparkbyexamples.com/r-programmi ... dataframe/ zeigt diverse Varianten auf, wobei ich vermute, dass 3.2 für Dich die passende ist.

Ich würde Google als eine der ersten Anlaufstellen bei Problemen sehr empfehlen - vor allem, wenn man vermutet, dass die Lösung einfach ist.
Antworten