Bonjour, J'ai plusieurs fichiers texte avec la même mise en page que je voudrais lire avec la fonction fread(). (voir deux exemples de fichiers ici: https://www.dropbox.com/sh/grpai6ppc6oq3ka/AADyECZHz5KW7wtv5xjF5-ena?dl=0) Les documents sont divisés en deux parties, la première partie contient 16 colonnes, la deuxième 7 colonnes. Je veux que les données de la première partie, et seule colonne 1 et 2.data.table fread() - première partie du document ignorée
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
Cela fonctionne parfaitement pour une partie de mes données (par exemple. CalcV10), où il y a plus d'une ligne de données.
Pour l'autre fichier, qui contient une seule ligne de données, mais la première partie est ignorée et la deuxième partie du document est lu à la place:
> 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
J'ai essayé de changer le nombre de lignes (colClasses = list (character = 1: 16)), mais cela n'a pas aidé. Je suis reconnaissant pour chaque petit indice!
Best, yakuelin
J'utilise la version 1.10.4 de data.table, la version R 3.3.2, version 1.0.136 de R Studio (tout cela a été mis à jour il y a deux semaines)
éditer
J'ai 40 fichiers du même nom et de la même mise en page (Calc.txt). Ils sont dans 20 dossiers, nommés V1 - V20, et chacun a deux sous-dossiers nommés après deux sim_types. Pour lire dans ces textes-fichiers i créé la fonction suivante:
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)
@ œuvres de sathish fines pour lire un fichier à la fois, mais ce serait bien d'automatiser cette étape pour tous les fichiers. Je lutte pour inclure la suggestion de Sathish dans ma fonction. Une idée?
Je ne l'ai pas vu vos données - peut-être vous devez définir '= tête FALSE' – Jean
Merci pour la suggestion waterling, je l'ai déjà essayé, ne contribue pas. – yakuelin