Добавить префикс для каждого списка элементов в R - PullRequest
3 голосов
/ 27 сентября 2019

У меня есть много csv-файлов, которые я читаю, используя пакет lapply & vroom (в нем 18 файлов с миллионами строк в каждом файле)

library(vroom)
filelist <- list.files(pattern = "*.csv")

dput (filelist)

c("UPW_119_1.csv", "UPW_119_2.csv", "UPW_119_3.csv")

files <- lapply(filelist, FUN=vroom)

Предположим ниже, как выглядит мой список:

files <- list(no1= c("1","2","3","4","5"), no2= c(1:3),no3 = c("190301010141","190301010141","190301010143","19030101014","190301010145"))

Я хочу добавить префикс "91" к каждому элементу в моем списке, за которым следует имя файла, частью которого они были в списке файлов

Я пробовал что-то подобное, но это не правильно

mytry :
files2 <- paste0("91", files, fileslist[i]) #Adding file name

Требуемый вывод

## List of 3
##  $ f1  : int [1:5] 911_UPW_119_1 912_UPW_119_1 913_UPW_119_1 914_UPW_119_1 915_UPW_119_1
##  $ no2: int [1:3] 911_UPW_119_2 912_UPW_119_2 913_UPW_119_2 
##  $ no3: int [1:5] "9190301010141_UPW_119_3","91190301010141_UPW_119_3","91190301010143_UPW_119_3","9119030101014_UPW_119_3","91190301010145_UPW_119_3")

Затем я хочу написать эти CSV-файлы

Итак, в сущности,Прочитайте 18 CSV-файлов, выполните модификацию, как указано выше, добавьте «91» (статический) и имя файла (динамический), затем запишите 18 CSV-файлов

Я так много исследовал, пробовал lapply & функцию списка и т.д., но нетпомощь!

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете использовать lapply:

filelist <- c("UPW_119_1.csv", "UPW_119_2.csv", "UPW_119_3.csv")
files <- list(no1= c("1","2","3","4","5"), no2= c(1:3),no3 = c("190301010141","190301010141","190301010143","19030101014","190301010145"))

lapply(1:length(files), function(k) paste(91, files[[k]], sub(".csv", "", filelist[[k]], fixed = TRUE), sep = "_"))

Он векторизован в lapply, поэтому он довольно эффективен

...