У меня есть папка с текстовым файлом с именем PredictedRecognitionPotentials
Я хочу связать эти файлы из разных папок в один файл unfied txt
Как я могу сделать это в R, потому что у меня нет доступа к оболочке?
> file <- "PredictedRecognitionPotentials.txt"
> mydirs <- c("/Users/Angel/Desktop/r/LP6005334","/Users/Angel/Desktop/r/LP6005500","/Users/Angel/Desktop/r/LP6007600","/Users/Angel/Desktop/r/LP6008202",
+ "/Users/Angel/Desktop/r/LP6008334-DNA_A03","/Users/Angel/Desktop/r/LP6008334-DNA_A04","/Users/Angel/Desktop/r/LP6008334-DNA_B02","/Users/Angel/Desktop/r/LP6008334-DNA_C02",
+ "/Users/Angel/Desktop/r/LP6008334-DNA_D02","/Users/Angel/Desktop/r/LP6008336-DNA_F02","/Users/Angel/Desktop/r/LP6008336-DNA_G01","/Users/Angel/Desktop/r/LP6008336-DNA_H01",
+ "/Users/Angel/Desktop/r/LP6008337-DNA_A07","/Users/Angel/Desktop/r/LP6008337-DNA_H06","/Users/Angel/Desktop/r/LP6008460-DNA_A04","/Users/Angel/Desktop/r/LP6008460-DNA_D01",
+ "/Users/Angel/Desktop/r/LP6008460-DNA_F02","/Users/Angel/Desktop/r/LP6008460-DNA_G03","/Users/Angel/Desktop/r/SLX-18929_UDP0015","/Users/Angel/Desktop/r/SLX-18929_UDP0018",
+ "/Users/Angel/Desktop/r/SLX-18929_UDP0024","/Users/Angel/Desktop/r/SLX-18929_UDP0030","/Users/Angel/Desktop/r/SLX-18929_UDP0059","/Users/Angel/Desktop/r/SLX-18929_UDP0067",
+ "/Users/Angel/Desktop/r/SLX-18929_UDP0080","/Users/Angel/Desktop/r/SLX-18929_UDP0086","/Users/Angel/Desktop/r/SLX-18929_UDP0094")
> res <- do.call(rbind, lapply(paste0(mydirs, file), read.table))
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file '/Users/Angel/Desktop/r/LP6005334PredictedRecognitionPotentials.txt': No such file or directory
> res <- do.call(rbind, lapply(paste0(mydirs, "/"), read.table))
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file '/Users/Angel/Desktop/r/LP6005334//': Permission denied
> res <- rbindlist(lapply(files, fread), fill = TRUE)
Error in FUN(X[[i]], ...) :
File '/Users/Angel/Desktop/r/SLX-18929_UDP0067//PredictedRecognitionPotentials.txt' does not exist or is non-readable. getwd()=='C:/Users/Angel/Desktop/r'
>
> res <- map_dfr(files, read_table)
-- Column specification --------------------------------------------------------------
cols(
`NeoantigenID Mutation Sample MutatedPeptide ResidueChangeClass MutantPeptide WildtypePeptide HLA Expression A R Excluded NeoantigenRecognitionPotential` = col_character()
)
-- Column specification --------------------------------------------------------------
cols(
`NeoantigenID Mutation Sample MutatedPeptide ResidueChangeClass MutantPeptide WildtypePeptide HLA A R Excluded NeoantigenRecognitionPotential` = col_character()
)
Error: '/Users/Angel/Desktop/r/SLX-18929_UDP0067//PredictedRecognitionPotentials.txt' does not exist.
> mydirs
[1] "/Users/Angel/Desktop/r/LP6005334/PredictedRecognitionPotentials"
[2] "/Users/Angel/Desktop/r/LP6005500/PredictedRecognitionPotentials"
[3] "/Users/Angel/Desktop/r/LP6007600/PredictedRecognitionPotentials"
[4] "/Users/Angel/Desktop/r/LP6008202/PredictedRecognitionPotentials"
[5] "/Users/Angel/Desktop/r/LP6008334-DNA_A03/PredictedRecognitionPotentials"
[6] "/Users/Angel/Desktop/r/LP6008334-DNA_A04/PredictedRecognitionPotentials"
[7] "/Users/Angel/Desktop/r/LP6008334-DNA_B02/PredictedRecognitionPotentials"
[8] "/Users/Angel/Desktop/r/LP6008334-DNA_C02/PredictedRecognitionPotentials"
[9] "/Users/Angel/Desktop/r/LP6008334-DNA_D02/PredictedRecognitionPotentials"
[10] "/Users/Angel/Desktop/r/LP6008336-DNA_F02/PredictedRecognitionPotentials"
[11] "/Users/Angel/Desktop/r/LP6008336-DNA_G01/PredictedRecognitionPotentials"
[12] "/Users/Angel/Desktop/r/LP6008336-DNA_H01/PredictedRecognitionPotentials"
[13] "/Users/Angel/Desktop/r/LP6008337-DNA_A07/PredictedRecognitionPotentials"
[14] "/Users/Angel/Desktop/r/LP6008337-DNA_H06/PredictedRecognitionPotentials"
[15] "/Users/Angel/Desktop/r/LP6008460-DNA_A04/PredictedRecognitionPotentials"
[16] "/Users/Angel/Desktop/r/LP6008460-DNA_D01/PredictedRecognitionPotentials"
[17] "/Users/Angel/Desktop/r/LP6008460-DNA_F02/PredictedRecognitionPotentials"
[18] "/Users/Angel/Desktop/r/LP6008460-DNA_G03/PredictedRecognitionPotentials"
[19] "/Users/Angel/Desktop/r/SLX-18929_UDP0015/PredictedRecognitionPotentials"
[20] "/Users/Angel/Desktop/r/SLX-18929_UDP0018/PredictedRecognitionPotentials"
[21] "/Users/Angel/Desktop/r/SLX-18929_UDP0024/PredictedRecognitionPotentials"
[22] "/Users/Angel/Desktop/r/SLX-18929_UDP0030/PredictedRecognitionPotentials"
[23] "/Users/Angel/Desktop/r/SLX-18929_UDP0059/PredictedRecognitionPotentials"
[24] "/Users/Angel/Desktop/r/SLX-18929_UDP0067/PredictedRecognitionPotentials"
[25] "/Users/Angel/Desktop/r/SLX-18929_UDP0080/PredictedRecognitionPotentials"
[26] "/Users/Angel/Desktop/r/SLX-18929_UDP0086/PredictedRecognitionPotentials"
[27] "/Users/Angel/Desktop/r/SLX-18929_UDP0094/PredictedRecognitionPotentials"
> res <- do.call(rbind, lapply(paste0(mydirs, file), read.table))
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file '/Users/Angel/Desktop/r/LP6005334/PredictedRecognitionPotentialsPredictedRecognitionPotentials.txt': No such file or directory
> res <- do.call(rbind, lapply(paste0(mydirs, "/"), read.table))
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file '/Users/Angel/Desktop/r/LP6005334/PredictedRecognitionPotentials/': No such file or directory
>
>
Если я сделаю mydirs <- c("/Users/Angel/Desktop/r/LP6005334","/Users/Angel/Desktop/r/LP6005500","/Users/Angel/Desktop/r/LP6007600","/Users/Angel/Desktop/r/LP6008202"); file <- "PredictedRecognitionPotentials.txt"; file.path(mydirs, file) [1] "/Users/Angel/Desktop/r/LP6005334/PredictedRecognitionPotentials.txt" "/Users/Angel/Desktop/r/LP6005500/PredictedRecognitionPotentials.txt" [3] "/Users/Angel/Desktop/r/LP6007600/PredictedRecognitionPotentials.txt" "/Users/Angel/Desktop/r/LP6008202/PredictedRecognitionPotentials
Я тестировал как на Mac, так и на Windows, и он работает на обоих
Проблема, показанная в последнем обновлении, заключается в том, что у вас нет "/Users/Angel/Desktop/r/LP6005334/PredictedRecognitionPotentials"
в конце. Я использовал .csv
из вашего первоначального поста mydirs
Было бы полезно, если бы вы могли удалить эти дополнительные >
и +
из кода, чтобы нам было проще скопировать ваш код прямо в R. Теперь нам нужно вручную удалить их из каждой строки.
Используя read.table
, затем rbind
. Что-то вроде
file <- "file_xy.txt"
mydirs <- c("X:/dir1/", "X:/dir2/")
res <- do.call(rbind, lapply(paste0(mydirs, file), read.table))
outdir <- "X:/outdir/"
write.table(res, file=paste0(outdir, "all.txt"))
Я добавил ваш любезный ответ в основной пост, в котором я получил ошибку
@Mussa Я считаю, что в конце каталогов отсутствует косая черта, поэтому строки вставляются без косой черты между ними. Попробуйте еще раз с mydirs <- paste0(mydirs , "/")
.
Мы можем использовать list.files
с path
в пути к родительскому каталогу, а затем указать recursive = TRUE
, чтобы проверить все подкаталоги на наличие файла, упомянутого в pattern
files <- list.files(path = "/Users/Angel/Desktop/r/",
pattern = "PredictedRecognitionPotentials\\.txt$"
recursive = TRUE, full.names = TRUE)
Или используйте file.path
, чтобы построить путь к файлу из уже созданного вектора папки и файла
files <- file.path(mydirs, file)
Затем мы можем использовать tidyverse
или base R
при чтении данных.
library(purrr)
library(readr)
res <- map_dfr(files, read_table)
Или мы можем использовать fread
из data.table
для более быстрого чтения.
library(data.table)
res <- rbindlist(lapply(files, fread), fill = TRUE)
Извините, я добавил свои новые ошибки в свои основные файлы
@Mussa Я думаю, вы перезаписали mydirs
некоторыми вставленными значениями. Если вы используете первую версию mydirs
с file
, это сработает.
Ошибка показывает косую черту
//
между файлом и последней подпапкой. Так должно быть/