Guten Tag, Ich habe mehrere Textdateien mit dem gleichen Layout, die ich mit der fread() Funktion einlesen möchte. (siehe zwei Beispieldateien hier: https://www.dropbox.com/sh/grpai6ppc6oq3ka/AADyECZHz5KW7wtv5xjF5-ena?dl=0) Die Dokumente sind in zwei Teile unterteilt, der erste Teil enthält 16 Spalten, der zweite 7 Spalten. Ich will nur die Daten des ersten Teils, und nur Spalte 1 und 2.data.table fread() - erster Teil des Dokuments übersprungen
dat10 <- fread("CalcV10.txt", select = c(1,2), verbose=TRUE, col.names = c("Net", "Nrp"))
> head(dat10)
Net Nrp
1: 225 1
2: 247 1
3: 268 1
4: 287 1
5: 301 12
6: 302 4
Das funktioniert perfekt für einen Teil meiner Daten (zB. CalcV10), wo es mehr als nur eine Reihe von Daten ist.
Für die andere Datei, die nur eine Zeile von Daten enthält, aber der erste Teil statt liest der zweite Teil des Dokuments übersprungen und wird:
> head(dat3)
Net Nrp
1: 1000 9.9
2: 1000 14.8
3: 1000 12.7
4: 1000 14.8
5: 1000 11.7
6: 1000 14.8
I die Anzahl der Zeilen zu ändern versucht (colClasses = list (character = 1: 16)), aber das hat nicht geholfen. Ich bin dankbar für jeden kleinen Hinweis!
Best, yakuelin
Ich 1.10.4 Version von data.table verwenden, R Version 3.3.2, Version 1.0.136 von R Studio (wurde vor 2 Wochen alles davon aktualisiert)
bearbeiten
Ich habe 40 Dateien mit dem gleichen Namen und Layout (Calc.txt). Sie befinden sich in 20 Ordnern mit dem Namen V1 - V20 und haben jeweils zwei Unterordner, die nach zwei sim_types benannt sind. Zum Lesen in diesen Text-Dateien erstellt ich die folgende Funktion:
read.res <- function(NrV, sim_type, FT) {
dat <- data.frame()
V <- paste("V", 1:NrV, sep="")
for (i in 1:NrV) {
Dir <- file.path(dataDir, V[i], sim_type)
setwd(Dir)
dat0 <- fread("Calc.txt", select = c(1,2), col.names = c("Net", "Nrp"))
dat0$type <- FT
dat<-rbind(dat, dat0)
}
dat<-as.data.frame(dat)
return(dat) }
Forest <- read.res(NrV=20, sim_type=sim_F, FT="F")
nonForest <- read.res(NrV=20, sim_type=sim_nF, FT="nF")
data <- rbind(Forest, nonForest)
@ Sathish Arbeiten fein eine Datei auf einmal zu lesen, aber es wäre toll, diesen Schritt für alle Dateien zu automatisieren. Ich bemühe mich, Sathishs Vorschlag in meine Funktion aufzunehmen. Irgendeine Idee?
Ich habe Ihre Daten nicht gesehen - vielleicht sollten Sie setzen 'header = false' – Jean
Danke für die Anregung waterling, ich habe bereits versucht, dass, hilft nicht. – yakuelin