2014-06-21 4 views
0

Une analyse que je courais produit environ 500 fichiers nommés fichier1 file500Recherche de fichiers présents dans le répertoire

Cependant, certains fichiers entre les deux sont absents (comme file233 et file245 ainsi que d'autres). Je voudrais les traiter plus en avant dans une boucle dans R mais ensuite je devrais filtrer les fichiers qui ne sont pas présents.

Existe-t-il un moyen facile de stocker le numéro après fichier dans un vecteur dans R que je peux ensuite utiliser pour la boucle?

v<-containing all numbers after file which are present in the directory 

aurait dû mentionner que les fichiers ne sont pas la fin, mais txt ne sont que des noms fileXX où XX est le numéro

+3

Une autre approche pourrait être d'utiliser 'list.files (pattern =" .txt ")' pour obtenir tous les fichiers .txt dans le répertoire. –

+0

Considérez également ajouter des zéros au nombre dans le nom de fichier, c'est-à-dire 'file001.txt',' file002.txt', etc. Ceci facilite le tri des noms. Regardez 'sprintf ('% 03d', 1:10)' pour y parvenir. –

Répondre

2

La meilleure façon est de créer simplement une liste des fichiers qui sont en fait présent dans le répertoire, comme @beginneR dit:

list_of_files = list.files('/path/to/dir') 

do_some_processing = function(list_element) { 
    # Perform some processing and return something 
} 
lapply(list_of_files, do_some_processing) 

Si vous avez besoin des chiffres dans le nom du fichier, une expression régulière simple fera:

> grep('[0-9]', sprintf('file%d', 1:100)) 
    [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 
[91] 91 92 93 94 95 96 97 98 99 100 
+0

le problème est que j'ai vraiment seulement besoin d'analyser les numéros après fichier xx.txt (où le nombre est le XX) pour tous les fichiers dans le répertoire. Les fichiers n'ont pas la terminaison .txt c'était juste un exemple ils ne sont que des noms fileXX – user3419669

+1

Il suffit d'exclure la partie 'pattern' pour obtenir tous les fichiers présents, ou utiliser un autre' pattern' différent, par exemple. 'fichier *'. –

+0

mais comment puis-je analyser les nombres? list.files me donnera seulement une liste de fichiers? file1, file2 ... file300 mais je devrais grep les nombres (1,2..300) – user3419669

Questions connexes