2015-11-04 7 views
1

У меня есть переменная с именем «data», которая содержит 10 списков, я хочу сохранить каждый список в разных файлах (с разными именами). Я знаю, как сохранить отдельный файл, но не как написать код для этого через цикл. Моя самая большая проблема связана с именем файлов.R сохранять несколько файлов с разными именами

Я хотел папку с файлами с этими именами: percentage0.01.bed, percentage0.02.bed ...)

Я пытаюсь что-то вроде этого:

percentages<-seq(0.01,0.1,0.01) 
>percentages 
[1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 
sapply(seq(length(data),function(x) write.table(data[x], sep= " ", col.names=F, "/home//Desktop/percentage"+toString(cv[x])) 

но он не работает ...

+0

Просьба сделать ваш пример воспроизводимым. Я думаю, что ваша проблема находится на пути, конкатенация строк не работает так, как в R. Вы можете использовать 'paste' или' sprintf'. – Heroka

+0

Существует несколько проблем (например, отсутствие ')' после 'length (data)'). Попробуйте 'data <- replicate (2, data.frame (x = runif (5), y = runif (5)), simplify = FALSE); проценты <- 1: длина (данные); sapply (seq (длина (данные)), функция (x) write.table (данные [[x]], sep = "", col.names = F, file = paste0 ("процент", проценты [x], " .bed ")))'. – lukeA

ответ

2

Я думаю, вы можете сделать лучше с петлей for здесь. Попробуйте:

mypath <- "/home//Desktop/percentage/" 

for (i in 1:length(percentages)) { 
    write.table(percentages[i], 
    file = paste0(mypath, paste("percentage", i, "bed", sep = "."))) 
} 

Отметьте, что я не могу отладить часть этого, которая указывает желаемый путь. Я попробовал версию на своей машине, и она работала нормально. Но обязательно включите этот последний /.

0

сохранение нескольких файлов с разными именами из фрейма данных, содержащего текст.

for(i in 1:nrow(df)){ 
myfile<-paste0("file", "_", i, ".txt") 
write.table(df[i,1],myfile,sep="\t",row.names=FALSE) 
} 
Смежные вопросы