Seite 1 von 1

Fehlermeldung

Verfasst: Fr Jun 05, 2020 12:23 pm
von bruecksy
Ich habe folgende Funktion erstellt:

Code: Alles auswählen

read_stations <- function(Daten) {
  +stationen <-
    read.table(
      Daten,
      header = TRUE,
      sep = ';',
      na.strings = NA,
      stringsAsFactors = FALSE
    )
  + stationen$MDA803 <-
    ifelse(stationen$Flag == '1', stationen$MDA803, NA)
  + stationen <-
    subset(stationen,
           stationen$Date >= '2000-01-01' & stationen$Date <= '2010-12-31')
  + if ((nrow(statioen) == 0) == TRUE) {
    +next+
  }
  + if ((stationen$Date[1] == '2000-01-01') == FALSE |
        (stationen$Date[length(stationen$Date)] == '2010-12-31') == FALSE) {
    +next+
  }
  + NA_perc = (nrow(subset(
    stationen, is.na(stationen$MDA803) == TRUE
  ))) / nrow(stationen)
  + if ((NA_perc <= 0.25) == TRUE) {
    +write.table(
      stationen,
      paste('Daten_final/', basename(Daten), sep = ''),
      sep = ';',
      row.names = FALSE
    )
    +
  }
  +
}
Diese möchte ich auf eine Liste anwenden

Code: Alles auswählen

daten_original <- list.files('Daten',all.files = FALSE,full.names = TRUE,pattern = 'IT')

lapply(daten_original,read_stations)
Dann wird mir eine Fehlermeldung angezeigt, die ich nicht verstehe.
Kennt jemand mögliche Lösungsansätze?
Screenshot (33).png

Re: Fehlermeldung

Verfasst: Fr Jun 05, 2020 12:40 pm
von jogo
Hallo bruecksy,

willkommen im Forum!
bruecksy hat geschrieben: Fr Jun 05, 2020 12:23 pm Ich habe folgende Funktion erstellt:
Was sind das für Pluszeichen in dem Code? Die gehören jedenfalls nicht zum R-Code.

Diese möchte ich auf eine Liste anwenden

Code: Alles auswählen

daten_original <- list.files('Daten',all.files = FALSE,full.names = TRUE,pattern = 'IT')

lapply(daten_original,read_stations)
Dann wird mir eine Fehlermeldung angezeigt, die ich nicht verstehe.
Hier habe ich Dir ein kleines Bespiel konstruiert, welches die gleiche Fehlermeldung erzeugt:

Code: Alles auswählen

x <- 1:5
x[3] <- c()
Kennt jemand mögliche Lösungsansätze?
ja, es nennt sich Debuggen.
Du musst die Stelle in der Funktion finden, die den Fehler verursacht, und herausfinden warum der Fehler auftritt.
Dabei kann die Funktion debug() sehr nützlich sein, z.B. so:

Code: Alles auswählen

debug(read_stations)
lapply(daten_original[1],read_stations)
(vorausgesetzt, der Fehler tritt schon bei der ersten Datei auf)

Gruß, Jörg