2016-12-20 3 views
0

У меня есть 6-10 объектов фрейма данных, которые я хотел бы записать. Прямо сейчас я должен вручную написать каждый из них с write.table. Я хотел бы упростить свой код и пропустить объекты и написать их все.loop write.table в нескольких кадрах данных

Я попытался предложения здесь:

Write to files in R using a loop

writing many files in a for loop using R

Однако я продолжаю получать файлы, которые правильно назвали, но выглядеть следующим образом:

> "x" 
"1" "listdata_cent" 

Вот пример моего кода:

names(lst) <- (ls(pattern = "^listdata")) 
lst <- as.list((ls(pattern = "^listdata"))) 
for (i in nam) { 
    write.table(i, file = paste(i, ".txt", sep = ""), col.names= TRUE, sep = "\t") 
} 

Любая помощь, которую вы можете дать, была бы весьма признательна. Я уверен, что я пропустил что-то простое.

+0

Что такое nam? он не определен. – lmo

+0

вы также должны предоставить данные ..., неясно, на что вы применяете шаблон. – user5249203

+0

Похоже, это может быть связано с этим [вопрос] (http://stackoverflow.com/questions/4209512/write-list-of-data-frames-to-separate-csv-files-with-laply). –

ответ

0

Благодаря Нику Крисуэлю, Ричарду Телфорду и Грегору. Я смог найти решение.

datalist = lapply(ls(pattern = "^listdata"), get) 
names(datalist) <- (ls(pattern = "^listdata")) 
for (i in 1:length(datalist)) { 
    write.table(datalist[i], file = paste(names(datalist[i]), ".txt", sep = ""), col.names= TRUE, sep = "\t", quote=FALSE) 
} 

Похоже, это может быть связано с этим вопросом. - Nick Criswell 4 часа назад i это просто имя. get (i) найдет объект i - Richard Telford 4 часа назад Вместо того, чтобы иметь кучу кадров данных, плавающих вокруг, наилучшей практикой было бы иметь список кадров данных. Проблема становится тривиальной, если ваши кадры данных находятся в списке. - Gregor 4 часа назад

Смежные вопросы