У меня есть папка с файлами .txt, у каждого есть длинные строковые имена, такие как "ctrl_Jack_DrugA_XXuM.txt". Однако в названии отсутствует важная строка, отметки времени.
Однако у меня есть эта информация в кадре данных внутри каждого файла. например, в каждом файле содержится несколько столбцов, один из столбцов называется «Pid_treatmentsum»: элементы в нем - «Jack_R4_200514_DrugA_XXuM.txt»
Поэтому, прежде чем перейти к нисходящему потоку, я хочу отсортировать файлы в подпапки, основанные на именах, таких как Джек и метка времени, таких как "R4_200514", и для этого мне нужно переименовать заголовок файла с помощью "Pid_treatmentsum".
Теперь код:
```
#create MRE
#file 1
Row <- c(rep("16", 20))
column <- c(rep("3", 20))
Pid<- c(rep("Jack", 20))
Stimulation<- c(rep("3S", 20))
Drug <- c(rep("2DG", 20))
Dose <-c(rep("3uM", 20))
Treatmentsum <-c(rep(paste("Jack","3S",'2DG','3uM',sep = "_"), 20))
PiD_treatmentsum <- c(rep(paste('Jack',"T4_20200501",'3S','2DG','3uM',sep = "_"), 20))
sampleset <-data.frame(Row,column,Pid,Stimulation,Drug,Dose,Treatmentsum,PiD_treatmentsum)
write.table(sampleset, file = "ctrl_Jack_3S_2DG_3uM.txt",sep="\t", row.names = F, col.names = T)
#file 2
Row <- c(rep("16", 40))
column <- c(rep("3", 40))
Pid<- c(rep("Mark", 40))
Stimulation<- c(rep("3S", 40))
Drug <- c(rep("STS", 40))
Dose <-c(rep("1uM", 40))
Treatmentsum <-c(rep(paste("Mark","3S",'STS','1uM',sep = "_"), 40))
PiD_treatmentsum <- c(rep(paste('Mark',"T5_20200501",'3S','STS','1uM',sep = "_"), 40))
sampleset <-data.frame(Row,column,Pid,Stimulation,Drug,Dose,Treatmentsum,PiD_treatmentsum)
write.table(sampleset, file = "ctrl_Mark_3S_STS_1uM.txt",sep="\t", row.names = F,col.names = T)
# rename all the files using their PiD_treatmentsum
filenames <- list.files("C:/UsersXXX", pattern="*.txt")
outdirectory <- "~/out"
lapply(filenames, function(x) {
df <- read.csv(x,sep="\t", header=TRUE, fill = T,stringsAsFactors = F)
a <- as.character(unique(df[["PiD_treatmentsum"]]))
b<-paste0("ctrl_",a, '.txt', sep="")
newname <- file.rename(basename(x), b)
write.table(df, paste0(outdirectory,"/", newname, sep="\t",
quote=FALSE, row.names=F, col.names=TRUE)
})
Здесь говорится, что ошибка неожиданна.} Я думаю, что я, должно быть, облажался l oop.
Если я просто анализирую код и запускаю один файл в качестве примера, код работает:
df <- read.csv('ctrl_Jack_3S_2DG_3uM.txt',sep="\t", header=TRUE,
fill = T,stringsAsFactors=F)
a <- as.character(unique(df[["PiD_treatmentsum"]]))
b<-paste0("ctrl_",a, '.txt', sep="")
basename('ctrl_Jack_3S_2DG_3uM.txt')
file.rename(basename('ctrl_Jack_3S_2DG_3uM.txt'), b)
```
Небольшая помощь и объяснение будет оценено :)