Ошибка при разделении и записи файлов txt в R studio

У меня есть большие имена файлов Objects_Population - AllCells.txt, которые составляют ~3 ГБ, в файле 25704373 строк и 132 переменных. Я хочу прочитать файл и разделить строки на основе одной переменной, которая является столбцом с именем treatmentum. В этом столбце у меня есть экспериментальные лекарственные препараты в различных условиях (3S или UNS), то есть строки, связанные с "_". Таким образом, разделение объединит все строки с одинаковой обработкой. После разделения файла я хочу записать разделенные файлы и дать имена файлам с использованием лечебной суммы.

Мой код ниже:

       #load libraries
library(tidyverse)
library(vroom)
library(dplyr)
library(stringr)

#read in the file, skip the first 9 rows
files<-vroom("Objects_Population - AllCells.txt", delim = "\t",skip = 9,col_names = T)

#split the files based on treatmentsum
splited<- files %>% 
  group_split(files$treatmentsum)

#write out the splitted files
output<- lapply(splited, function(i){
  for (i in 1:length(splited)) {
    write.table(splited[[i]][,1:131],file=paste(unique(splited[[i]]$treatmentsum),".txt"), sep="\t", row.names=FALSE)

  }
 })

Поэтому, когда я запускаю его, файл читается правильно, и разделение работает нормально, а процедуры обрабатываются, как ожидалось, то есть я получаю список из 1092 (показан в среде), каждый список содержит строки с одинаковым обработкой. Однако этот код умирает каждый раз после того, как он записывает мне 233 файла. Я просмотрел снимок с ошибкой, и все сгенерированные файлы относятся к 3S, файлы UNS не сгенерированы (как вы можете видеть на правом нижнем скриншоте каталога файлов). Может ли кто-нибудь помочь мне с этим и сообщить, что означает ошибка?

1 ответ

Решение

Я выяснил, что в некоторых именах файлов в названии лечения будет "/". Вдохновленный этим /questions/23371495/pochemu-ya-poluchayu-etu-oshibku-zapisi-dannyih-v-fajl/23371502#23371502

library(tidyverse)
library(vroom)
library(dplyr)
library(stringr)
files<-vroom("Objects_Population - AllCells.txt", delim = "\t",skip = 9,col_names = T)


splited<- files %>% 
  group_split(files$treatmentsum)



output<- lapply(splited, function(i){
  for (i in 1:length(splited)) {
    write.table(splited[[i]][,1:131],file=paste0(gsub("/","",unique(splited[[i]]$treatmentsum)),".txt"), sep="\t", 
row.names=FALSE)

  }
 })
Другие вопросы по тегам