2017-02-07 2 views
0

У меня есть папка, полная файлов csv с определенным шаблоном именования (все с 4 цифрами), «0001.csv», «0002.csv» и т. Д. Все файлы имеют одинаковые заголовки и формат.Выборочно Fread на основе результатов из данных.table

Если я хочу объединить ВСЕ файлы или провести анализ с ними. Я могу это сделать

all.files <- list.files(path = "/Users",pattern = ".csv") 
DT <- lapply(all.files, fread # or other self-defined function) 
DT <- rbindlist(DT) 

НО теперь я хочу сделать list.files основываясь на определенном выходе из одного data.table.

dt <- data.table(Ticker = c("0001","0002","0003","0004"), Status = c("True", "True","True","False")) 
 
> dt 
    Ticker Status 
1: 0001 True 
2: 0002 True 
3: 0003 True 
4: 0004 False 

Я хочу, чтобы объединить файлы, status в dtTRUE. Не все. поэтому list.files может быть неприменим.

Любые предложения? большое спасибо.

+0

Если имена файлов содержатся в 'дт $ Ticker', то, возможно, просто используйте' all.files <- paste0 (дт [ as.logical (Status), Ticker], ".csv") '. – lmo

ответ

2

Если я правильно это может быть сделано как:

DT <- lapply(paste0(dt[Status == 'True', Ticker], '.csv'), function(x) fread(x)) 
DT <- rbindlist(DT) 
Смежные вопросы