Adicione a coluna "filename" à tabela, pois vários arquivos são lidos e vinculados

Eu tenho vários arquivos csv em vários diretórios que eu quero ler em um tribble R ou data.table. Eu uso "list.files ()" com o argumento recursivo definido como TRUE para criar uma lista de nomes e caminhos de arquivos, depois uso "lapply ()" para ler em vários arquivos csv e, em seguida, "bind_rows ()" coloca todos eles juntos:

filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
tbl <- lapply(filenames, read_csv) %>% 
  bind_rows()

Essa abordagem funciona bem. No entanto, preciso extrair uma substring do nome de cada arquivo e adicioná-lo como uma coluna à tabela final. Posso obter a substring de que preciso com "str_extract ()" assim:

sites <- str_extract(filenames, "[A-Z]{2}-[A-Za-z0-9]{3}")

No entanto, estou preso em como adicionar a substring extraída como uma coluna, pois lapply () passa por read_csv () para cada arquivo.

questionAnswers(4)

yourAnswerToTheQuestion