Erreur dans le fichier(fichier, “rt”) : invalid 'description' argumentation complète.cas du programme
Je suis en train d'écrire une fonction R qui lit un répertoire plein de fichiers et rapports sur le nombre de cas observés dans chaque fichier de données. La fonction renvoie une trame de données où la première colonne est le nom du fichier et la deuxième colonne est le nombre de cas.
comme,
id nobs
1 108
2 345
...
etc
Voici la fonction que j'ai écrit:
complete <- function(directory, id = 1:332) {
for(i in 1:332) {
path<-paste(directory,"/",id,".csv",sep="")
mydata<-read.csv(path)
#nobs<-nrow(na.omit(mydata))
nobs<-sum(complete.cases(mydata))
i<-i+1
}
completedata<-c(id,nobs)
}
J'exécute la fonction:
complete("specdata",id=1:332)
mais j'obtiens cette erreur:
Error in file(file, "rt") : invalid 'description' argument
J'ai aussi essayé la traceback()
fonction de débogage mon code et il donne à cette sortie:
traceback()
# 4: file(file, "rt") at #6
# 3: read.table(file = file, header = header, sep = sep, quote = quote,
# dec = dec, fill = fill, comment.char = comment.char, ...) at #6
# 2: read.csv(path) at #6
# 1: complete("specdata", id = 1:332)
Vous devez vous connecter pour publier un commentaire.
C'est difficile à dire sans complètement reproductible exemple, mais je pense que votre problème vient de cette ligne:
id
ici est un vecteur, chemin devient un vecteur de chaînes de caractères, et lorsque vous appelezread.csv
vous êtes de passage tous les chemins à la fois au lieu d'une seule. Essayez de modifier la ligne ci-dessus pouret voir si cela fonctionne.
Il semble que vous avez un problème avec votre chemin d'accès au fichier.
Vous êtes de passage à la pleine vecteur id =c(1:332) pour le chemin du fichier de nom.
Si vos fichiers sont nommés de 1.csv, 2.csv, 3.csv, etc..
Vous pouvez modifier cette ligne:
à
et de sortir ou de retravailler l'id de l'entrée de votre fonction.
Au lieu d'utiliser un
for
pour lire les données, vous pouvez essayersapply
. Par exempleDepuis
path
est un vecteur,sapply
réitérera le vecteur et d'appliquerread.csv
à elle. Par conséquent, il n'y aura pas besoin de lafor
boucle et votre code sera plus propre.À partir de là, vous aurez une
matrix
qui chacun de vos fichiers et de leurs informations respectives à partir de laquelle vous pouvez extraire les observations.Pour trouver les observations, vous pouvez le faire
mydata[2,1][[1]]
. Rappelez-vous que les lignes seront vos facteurs et vos colonnes seront vos fichiers.J'ai rencontré le même problème dans cette phrase:
puis, j'ai trouvé il y a deux types de fichiers csv dans le même chemin, comme ceci:
Lorsque j'ai supprimé un fichier, il fonctionne à nouveau.