2015-10-27 7 views
0

Я хочу вывести таблицы из списка из 64 элементов, сохранив имена файлов из 64 элементов. Мои данные имеет вид:Выписать несколько текстовых файлов из большого списка

ANNUAL.PRED Large list (64 elements, 1.4 Mb) 
file1 : num [1:251, 1:12] 35.23 74.09 ... 
------------------------------------------------- 
file64: num [1:96, 1:12] 102.4 107.6 ... 

Я попытался следующий подход:

invisible(lapply(names(ANNUAL.PRED), function(x){ 
write.table(ANNUAL.PRED, file=paste(x, ".txt", sep="\t") 
})) 

Но я получаю следующее сообщение об ошибке:

Error in data.frame(file1 = c(35.2264588125098, 74.0906522082933, 52.2975727774542, : arguments imply differing number of rows: 251, 145, 100, 96, 241, 240, 242, 243

Любые идеи, что я делаю неправильно здесь ? Я использовал подобный подход для вывода нескольких графиков таким образом, и он сработал.

+1

Несколько вопросов, я могу запятнать от руки: 1) Вы передаете весь список 'write.table ', каждый раз, а не один элемент списка для вызова' write.table'. 2) Вероятно, вы хотите передать 'sep =" \ t "' в качестве аргумента для 'write.table', но выше вы его используете как аргумент' paste'. – arvi1000

+0

Это хорошая точка @ arvi1000, потому что, когда выходные файлы создаются в моем каталоге, он печатает FALSE, когда передаю аргумент «header = FALSE». Как я могу сделать аргументы sep и заголовок для write.table, а не вставить? –

+0

Ничего, я получил его, просто добавив аргументы write.table после первого закрытия скобок для аргументов вставки. –

ответ

1

После большого количества проб и ошибок, я решил это с небольшим изменением на выше:

invisible(lapply(names(ANNUAL.PRED), function(x){ 
write.table(ANNUAL.PRED[x], file=paste(x, ".txt", sep="\t") 
})) 
+0

Я не вижу разницы между ответом и тем, что вы пробовали перед рукой. – leroyJr

+0

Извините @leroyJr - я отказался от изменения ключа, но теперь изменил его. Подмножество [x] после ГОДОВОЙ.PRED имело значение. –