r - 在r中将列表项输出到csv时设置正确的列名
问题描述
给定一个列表(例如输出),我想将每个项目写入一个单独的 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"))
}
抱歉没有合适的标签...我没有设置我认为对这篇文章有用的标签的声誉,也找不到在可用标签中有意义的标签。
解决方案
我们不需要指定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])
推荐阅读
- ethereum - 如何使用 Remix 将智能合约发布到主网
- javascript - ClearInterval 不起作用,下面的 setInterval 以 2 倍速度重启
- ios - 如何使用开关快速隐藏/显示文本字段
- r - 使用另一个反应函数的输出从反应函数创建数据帧
- vue.js - VueX 替换状态中的数组数据
- google-sheets - 我需要一个 COUNTIF 函数来搜索包含问题的不同工作表上的列并返回特定答案的出现次数
- aws-step-functions - AWS 步骤函数嵌套映射步骤
- amazon-web-services - 我需要在 AWS 中的私有实例的安全组中应用哪些规则以允许 Informatica 链接在实例之外工作
- python - 加倍数变量(python)
- javascript - 如何通过 javascript 代码将元数据 json 上传到 IPFS,以及如何通过前端以编程方式生成此 URL