нужна помощь по моей задаче. Итак, у меня есть папка из 121 файла .txt. Каждый размером около 10 МБ. Для каждого файла .txt у них почти одинаковые столбцы / заголовки и разные строки. Я обнаружил разницу в заголовках столбцов только вчера, и это может быть связано с тем, что машина, генерирующая файл .txt, использует много специальных символов в заголовке, поэтому, когда я их читаю, происходит забавное дело.
Я хотел бы прочитать все файлы в папке, а затем объединить их в один большой файл для последующего анализа. Теперь, когда у меня есть две другие проблемы, их размер и потенциальное несоответствие размеров привели к сбою кода fread (). Я хотел бы найти функцию, которая могла бы правильно читать в большом количестве файлов .txt. Во-вторых, я хочу произвести случайную выборку, скажем, 20% каждого файла после их чтения, и использовать эти 20% для объединения файла .csv для последующей обработки. Я не новичок, поэтому до сих пор операции со списками всегда были концептуально сложными. А потом, в конце концов, rbind не сработал, так как некоторые размеры файла несовместимы. Я использовал gtools и smartbind, чтобы обойти. Но тогда, аналогично случайной выборке перед созданием массивного файла, могу ли я также подгруппировать столбцы с 1 по 131 в каждом считываемом файле?
вот мой код, который медленно читает все файлы и объединяет их в большой .csv. Пожалуйста, просветите меня.
setwd("C:/Users/mli/Desktop/3S_DMSO")
library(gtools)
# Create list of text files
txt_files_ls = list.files(pattern="*.txt")
# Read the files in, assuming comma separator
txt_files_df <- lapply(txt_files_ls, function(x) {read.csv(file = x, header = T, sep ="\t")})
# Combine them
combined_df <- do.call("smartbind", lapply(txt_files_df, as.data.frame))
write.csv(combined_df,"3SDMSO_merged.csv",row.names = F)