установить правильные имена столбцов при выводе элементов списка в csv в r - PullRequest
0 голосов
/ 31 декабря 2018

Учитывая список (например, вне), я хочу записать каждый элемент в отдельный файл CSV для использования в другом месте.Список большой и содержит много элементов, поэтому я хотел использовать ярлык для цикла for.Я создал следующее, чтобы создать имя для каждого выходного файла на основе группы данных и даты.Когда я запускаю его, все работает, за исключением того, что он переименовывает столбцы, используя имя элемента списка и существующие имена столбцов (например, вместо «week4» я получаю «pygweek4». Я не хочу, чтобы он менял имена моих столбцов.

Я попытался установить col.names = TRUE, надеясь сохранить существующие имена и используя приведенный ниже код для указания имен, а также установить col.names = FALSE. Во всех случаях я получаю предупреждающее сообщение о том, что «попытка установить'col.names' игнорируется ".

Может кто-нибудь предложить простой метод сохранения имен столбцов, которые у меня уже есть?

out <- list(pyg = structure(list(week4 = c("0", "1", "1", "0", "1"), 
      week5 = c("0", "1", "1", "1", "1"), week6 = c("0", "1", "0", "1", "1"), 
      week7 = c("0", "0", "0", "1", "1"), week8 = c("0", "1", "0", "1", "1")), 
      row.names = 281:285, class = "data.frame"), 
      saw = structure(list(week4 = c("0", "0", "0", "0", "0"), 
      week5 = c("0", "0", "0", "0", "0"), week6 = c("0", "0", "0", "0", "0"), 
      week7 = c("0", "0", "0", "0", "0"), week8 = c("0", "0", "0", "0", "1")), 
      row.names = c(NA, 5L), class = "data.frame")) 

 for(i in 1:length(out)){
  n = paste(paste(names(out)[i],Sys.Date(), sep = "_"),  ".csv", sep = "")  # create set name and version control
  write.csv(out[i], file = n, row.names = FALSE, col.names = c("week4", "week5", "week6", "week7", "week8"))
}

Извините за отсутствие приличных тегов ...у меня нет репутации устанавливать теги, которые я считаю полезными для этого поста, и не могу найти те, которые имеют смысл в доступных.

1 Ответ

0 голосов
/ 31 декабря 2018

Нам не нужно указывать col.names.Кажется, проблема в том, что элементы list извлекаются неправильно.Это должно быть [[i]] вместо [i][i] это все еще list одного data.frame элемента.Делая [[i]], он извлекает data.frame из list

for(i in seq_along(out)){
   n <- paste(paste(names(out)[i],Sys.Date(), sep = "_"),  
                     ".csv", sep = "")  
    write.csv(out[[i]], file = n, row.names = FALSE, quote = FALSE)
   }

Разницу можно найти при проверке str

str(out[[1]])
str(out[1])    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...