#r #lapply
#r #lapply
Вопрос:
У меня есть следующий список
L = list.files(".", ".txt")
что такое
a.txt
b.txt
c.txt
и я хочу применить некоторый код ко всем файлам в этом списке, но я хочу сохранить фреймы данных с тем же именем плюс какой-нибудь символ, чтобы указать, что он изменен. Например
a_modified.txt
b_modified.txt
c_modified.txt
В настоящее время я использую этот код:
datalist = lapply(L, function(x) {
DF = read.csv(x, sep = ",")
DF$X = gsub("[:.:][[:digit:]]{1,3}","", DF$X))
colnames(DF)[colnames(DF)=="X"] <- "ID"
DF <- merge(DF, genes ,by="ID")
write.csv(DF, x)
return(DF)
})
Я пытался использовать
write.csv(DF, x "_modified")
что было явно неправильно, поскольку write.csv не принимает эту точную операцию.
Есть идеи?
Ответ №1:
Нам нужно paste
вместо
write.csv(DF, paste0(sub("\.txt", "", x), "_modified.csv"))
или это можно сделать внутри sub
самого себя
write.csv(DF, sub("\.txt", "_modified.csv", x))
ПРИМЕЧАНИЕ: первоначальные наборы данных были .txt