Seite 1 von 1

Iteratives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Mo Feb 05, 2018 1:27 pm
von Regression
Hallo Zusammen,

Habe eine Verzeichnis mit über 100 Tabellen(Datensetzen).
ich habe eine Funktion geschrieben (evaluate_data(DataName)), die mir ein Datensatz (also das DataName) berechnet.
Nun möchte ich nicht die Funktion über 100 mal aufrufen und die Ergebnisse manuell in einer Tabelle speichern.
Besteht die Möglichkeit eine for- Schleife zu schreiben, die die Daten aus einem Verzeichnis einliest?
Ich könnte mir vorstellen, dass man eine zusätzliche Liste benötigt die die Namen der Datensätze beinhaltet.
aber wie geht man dann vor ?
Ich hab an sowas gedacht wie:

Code: Alles auswählen

 for (i in 1:length(DataList)) {
    Main.Data<- Data[i]
    read.csv2()
  }
wie übergibt man den Namen der Datei in den Pfand?

Oder gibt es eventuell eine elegantere Lösung?
Besten Dank für eure Antworten im Voraus!!!!

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Mo Feb 05, 2018 2:37 pm
von bigben
Hallo!

Zunäcsht einmal kannst Du mit den Funktionen dir und list.files einen Vektor mit den Dateien in einem bestimmten Ordner einlesen. Das dürfte schon mal hilfreich sein. Siehe auch

Code: Alles auswählen

help(list.files)
Eine for Schleife in R kann mehr als eine for Schleife in C. Wenn Du schreibst

Code: Alles auswählen

for (i in 1:length(DataList)) 
dann durchläuft i der Reihe nach die Zahlen in dem Vektor `1:length(DataList)`. Stattdessen kannst Du i auch über einen Vektor mit Namen laufen lassen.

Code: Alles auswählen

namen <- c("albert.csv", "berta.csv", "caesar.csv", "doerte.csv", "emil.csv")
for (name in namen){
    print(name)
}
Kannst Du damit schon was anfangen? Anstelle des print müsstest Du natürlich bei Dir ein read.csv setzen und Dir überlegen, wie Du Dir die Ergebnisse nach jedem Schleifendurchlauf merkst, damit sie nicht jedes Mal überschrieben werden.

LG,
Bernhard

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Mo Feb 05, 2018 10:33 pm
von EDi
Ich würde mit lapply() über die Dateipfade laufen. Vorteil ist dass man danach alles in einer Liste hat, von der man dann weiterarbeiten kann (z. b. do.call(rbind, <list>)).

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Di Feb 06, 2018 7:24 am
von Regression
Das ist schon mal ein Ansatz, besten Dank!
Probiere heute Nachmittag aus.

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Di Feb 06, 2018 9:34 am
von jogo
Hallo Regression,

hier wurde schon mal etwas strukturell Ähnliches (bezüglich des Ablaufes) beschrieben:
viewtopic.php?f=7&t=568&p=2317&hilit=lapply#p2307

Gruß, Jörg

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Di Feb 06, 2018 11:45 am
von Regression
Vielen Dank für den Tipp mit list.files, das hat wunderbar funktioniert.
Nun stehe ich aber immer noch vor der Frage wie ich ein i-tes Element aus der Liste in den Pfad übergebe, etwas konkreter:
mit

Code: Alles auswählen

myList<-list.files(path="~/myPath")
erhalte ich nun die gewünschte Liste.
nun möchte ich diese liste der Reihe nach bearbeiten, dazu müsste ich diese erst einlesen lassen, aber wie?

Code: Alles auswählen

fileName<-read.csv("~/myPath/fileName", header=FALSE)
so soll es ja eigentlich aussehen, aber ich habe ja nur myList statt fileName zur Verfügung.
Sprich wenn ich

Code: Alles auswählen

fileName<-read.csv("~/myPath/myList[i]", header=FALSE)
wird selbstverständlich nach dem Filenamen "myList" und nicht nach dem Inhalt von myList an der Stelle i gesucht.

Ist es verständlich was ich meine?

Re: Itereives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Di Feb 06, 2018 11:58 am
von Regression
jogo hat geschrieben: Di Feb 06, 2018 9:34 am Hallo Regression,

hier wurde schon mal etwas strukturell Ähnliches (bezüglich des Ablaufes) beschrieben:
viewtopic.php?f=7&t=568&p=2317&hilit=lapply#p2307

Gruß, Jörg
Oh das habe ich spät gelesen... es beschreibt genau mein Anliegen, besten Dank, hat alles geklappt!

Re: Iteratives Einlesen von Datensätzen aus einem Verzeichnis

Verfasst: Mo Feb 12, 2018 8:33 am
von jogo
Hier noch etwas zu diesem Thema bei StackOverflow
https://stackoverflow.com/questions/114 ... les-into-r

Gruß, Jörg