2017-02-15 14 views
1

Я пишу на диск кучу кадров данных с использованием write.csv:write.csv Мессинг имена заголовков при записи кадра данных на диск

data_frames <- Filter(function(x) is(x, "data.frame"), mget(ls())) 

for (i in 1:length(data_frames)) { 

file_name<- paste0("data/to_save/",names(data_frames[i]),".csv") 

write.csv(data_frames[i], file = file_name, row.names = FALSE, col.names = TRUE) 

} 

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

"April2016_file.customer_id","April2016_file.customerName","April2016_file.customerSurname"....... 

такое же поведение с помощью write.table и используя export скрипт из пакета rio

Требуемый результат:

"customer_id","customerName","customerSurname".... 
+1

Для получения дополнительной информации либо посмотреть документацию ('«[» ') или см. http://stackoverflow.com/questions/1169456/ –

ответ

1

Мы должны извлечь list элементы с [[ в [ еще list с одним data.frame

for (i in seq_along(data_frames)) { 
    file_name<- paste0("data/to_save/",names(data_frames[i]),".csv") 
    write.csv(data_frames[[i]], file = file_name, row.names = FALSE, col.names = TRUE) 
} 
+1

Нет полностью понятого поведения, но предложение akrun сделало трюк. Благодаря!!! – Forge

+0

@Forge Что происходит, когда вы пишете элемент списка, у него также есть имя, которое добавляется, а с помощью '[[', вы извлекаете элемент 'list', поэтому вы избегаете его. то есть 'lst <- setNames (1: 3, ПИСЬМА [1: 3]); lst [1] 'vs' lst [[1]] ' – akrun

+0

akrun, в этом случае, я думаю, вы могли бы закрыть вопрос ссылкой, которую я предоставил, поскольку вопрос показывает, что OP требует только правильного понимания разницы между двумя (что хорошо объяснено в связанном Q) .. но я не с тех пор, как вы уже ответили рабочим решением. –