2011-08-25 5 views
4

J'essaie de renvoyer un nom de fichier à partir de list.files, mais il y a 2 fichiers nommés de la même manière. filename.csv filename_review.csvComment faire pour grep cela et PAS cela?

Je veux mettre chaque nom de fichier dans sa propre liste. Faire cela pour filename_review.csv est facile car il a des choses uniques, mais comment puis-je passer au crible l'autre? J'ai besoin de grep(".csv", list.files()) sans obtenir filename_review.csv retourné.

+1

Trouvé ceci ... 'fileListBig [! (FileListBig% in% fileListSmall)]' et cela fonctionne. – James

+3

Si ce que vous avez découvert a résolu votre problème, postez-le comme une réponse et ensuite (après 2 jours) l'accepter. – joran

Répondre

-2

à cet ... fileListBig[!(fileListBig %in% fileListSmall)] et cela fonctionne.

+0

Il n'y a pas de définition de 'fileListBig' et' fileListSmall' dans la question ou la solution. La solution serait plus utile pour d'autres personnes ayant des questions similaires si elle était reproductible, comme c'est la solution fournie par @dococzig. – jbaums

11

Afficher tous les fichiers dans le répertoire de travail qui a un csv extension, mais pas une fin en examen pourraient faire:

setdiff(list.files(pattern='.csv$'), list.files(pattern='review.csv$')) 
+1

+1 pour illustrer les opérations d'ensemble. Très utile. –

3

Une autre option est de grep pour ce que vous ne faites pas veulent , puis retournez tout le reste.

csvs <- list.files(patt='.csv$') 
csvs[!grepl('_', csvs)