【问题标题】:set correct column names when output list items to csv in r在r中将列表项输出到csv时设置正确的列名
【发布时间】:2018-12-31 17:42:18
【问题描述】:

给定一个列表(例如输出),我想将每个项目写入一个单独的 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"))
}

抱歉,缺少合适的标签...我没有设置我认为对这篇文章有用的标签的声誉,并且在可用的标签中找不到有意义的标签。

【问题讨论】:

    标签: r output


    【解决方案1】:

    我们不需要指定col.names。问题似乎是,list 元素未正确提取。它应该是[[i]] 而不是[i]。对于[i],它仍然是一个data.frame 元素的list。通过执行[[i]],它从list 中提取data.frame

    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])    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2019-02-08
      相关资源
      最近更新 更多