2017-11-30 4 views
0

ich ein Skript erstellt haben, zu starten, die alle csv öffnen und XLSX-Dateien ein Verzeichnis enthält. Mein Problem tritt auf, wenn mein Verzeichnis keinen Dateityp enthält. (Ex: 5 csv und 0 xlsx OR 0 csv und 14 xlsx) Hier ist, was mein Skript wie folgt aussieht:eine Bedingung Fügen Sie eine Funktion in R

#step 1 
file.list <- list.files(pattern='*.csv') 
csv_df <- lapply(file.list, read.csv, header=TRUE) 

#step 2 
file.list <- list.files(pattern='*.xlsx') 
xlsx_df <- lapply(file.list, read_excel_function) 

Ich habe eine Fehlermeldung:

Error in do.call("rbind", xlsx_df) : 
le second argument doit être une liste (the second argument must be a list) 

Haben Sie eine Idee wie man eine Bedingung hinzufügt, die einen Schritt überspringt, wenn die list.files nichts zurückgeben?

+1

Hinweis: Was ist der [ 'length'] (http://stat.ethz.ch/R-manual/R-devel/library/base/html/length.html) von' file.list', wenn es ist leer? Kannst du die "Länge" als Bedingung in einer "if" -Anweisung verwenden? – bouncyball

Antwort

2

könnten Sie führen nur die Lese-/kombinieren Befehl nur, wenn file.list nicht leer ist. Zum Beispiel:

file.list <- list.files(pattern='*.csv') 
if (length(file.list) > 0){ 
    csv_df <- lapply(file.list, read.csv, header=TRUE) 
} 

Sie könnten auch eine else Bedingung hinzufügen, wenn Sie csv_df wollen einen anderen Wert für den Fall haben, dass es keine relevanten Dateien ist.

+0

Vielen Dank für Ihre Antwort! Es wirkt wie ein Zauber! – Remi

Verwandte Themen