2014-01-19 6 views
-3

Как написать функцию, которая читает несколько файлов csv, многие из которых начинаются с 00, например. 001.csv, 002.csv, 003.csv и так далее.Как читать несколько файлов CSV, создавая функцию

Мой код:

getmonitor <- function(id, directory, summarize = FALSE) { 

    filename <- list.files(pattern="specdata/.csv") 

    data <- read.csv(paste(directory,"/",id,".csv",sep="")) 
    return (data) 
} 

Это работает, если вы наберете:

getmonitor(100, "specdata") 

, но если я типа:

getmonitor(001, "specdata") 

вернет:

Error in file(file, "rt") : cannot open the connection 

Дополнительно: Предупреждение Сообщение:

In file(file, "rt") : 
    cannot open file 'specdata/1.csv': No such file or directory 

Как сделать моя функция чтения csv файлы, которые начинаются с 00 с?

+4

Этот вопрос в Coursera уже решен уже при переполнении стека. Просто найдите «getmonitor» и посмотрите, что получится. – A5C1D2H2I1M1N2O1R2T1

ответ

3

Вы можете использовать sprintf для форматирования чисел, как это:

> sprintf('%03d',12) 
[1] "012" 
0

Вы можете использовать Sprintf как предложено @Andrey Шабалин или в качестве альтернативы вы можете использовать formatC так:

id <-1 
formatC(id, width=4, flag="0") 
[1] "0001" 

В вашей функции вы должны поместить эту строку перед чтением в файл:

id <- formatC(id, width=4, flag="0") 

Ho Это помогает.

Смежные вопросы