在R中附加的write.table输出之间添加附加信息

在R中附加的write.table输出之间添加附加信息,r,write.table,R,Write.table,我试图使用write.table函数的append=TRUE参数将一系列表输出到CSV文件。然而,我想在表格之间添加额外的信息(例如表格标题) 我对R非常陌生,不知道如何使用循环/定义函数等。因此,请逐行执行所有操作,因此希望解决方案采用类似的简单格式,以便我能够操纵代码以供以后其他使用 我目前的代码是: table1 <- aggregate(myData[,7:11],by=list(myData$Variable1), min) table2 <- aggregate(myDa

我试图使用
write.table
函数的
append=TRUE
参数将一系列表输出到CSV文件。然而,我想在表格之间添加额外的信息(例如表格标题)

我对R非常陌生,不知道如何使用循环/定义函数等。因此,请逐行执行所有操作,因此希望解决方案采用类似的简单格式,以便我能够操纵代码以供以后其他使用

我目前的代码是:

table1 <- aggregate(myData[,7:11],by=list(myData$Variable1), min)
table2 <- aggregate(myData[,7:11],by=list(myData$Variable1), median)
table3 <- aggregate(myData[,7:11],by=list(myData$Variable1), max)
write.table(table1, file="myDataTables.csv", append = FALSE, sep=",", row.names=FALSE)
write.table(table2, file="myDataTables.csv", append = TRUE, sep=",", row.names=FALSE)
write.table(table3, file="myDataTables.csv", append = TRUE, sep=",", row.names=FALSE)

我希望它看起来像(包括空白行)是:

当我将输出发送到.txt文件时,我使用cat函数添加标题和空行,如下所示:

out<-capture.output(table1)
cat("Table 1: Table Name","",out,"","",file="myDataTables.txt",sep="\n",append=TRUE)

out简单的解决方案,或多或少就是您在问题中包含的代码

co2_mins <- aggregate(. ~ Plant, CO2, min)
co2_medians <- aggregate(. ~ Plant, CO2, median)
co2_maxs <- aggregate(. ~ Plant, CO2, max)

out_file <- "myDataTables.csv"
sep <- ","
cat("Table 1: CO2 minima by plant\n", file = out_file)
write.table(co2_mins, out_file, append = TRUE, sep = sep)
cat("\nTable 2: CO2 medians by plant\n", file = out_file, append = TRUE)
write.table(co2_mins, out_file, append = TRUE, sep = sep)
cat("\nTable 3: CO2 maxima by plant\n", file = out_file, append = TRUE)
write.table(co2_mins, out_file, append = TRUE, sep = sep)

我应该指出你想要的有点奇怪。CSV文件非常适合存储数据,但不适合人类阅读。在这种情况下,多个CSV文件加上字幕供人阅读,这使得以编程方式使用很困难,因此现在您有了一个难以读取且不利于数据存储的文件


最好将您的数据存储在单独的CSV文件中,然后使用
knitr
包从您的数据自动生成报告。

我不知道此解决方案在您的特定示例中是否有效,但在我的情况下似乎效果很好(除了为某些事件输出一些警告消息):

假设您已将所有表包装到一个列表中,然后有一个“for循环”将它们附加到单个csv文件中。然后,您可以使用它在每个写入的csv表中生成一个“空行”:

list_tables 
[[1]]
Table1 
[[2]]
Table2
[[3]]
Table3
[[4]]
Table4

 write.table( rbind(list_tables[[i]], ""), path-filename, append=T, ....) 

谢谢,对于大多数使用R进行数据分析的人,我能理解这看起来很奇怪!但目前我的R技能仅扩展到数据的基本分析——因此我使用它来读取excel数据,进行描述性和推断性统计,然后将数据导出回excel,以创建用于显示结果的图形,并为我的团队中不进行编程的其他人查看数据/分析。(我知道你可以在R中绘制大量曲线图,但学习如何制作/定制它们以匹配我们品牌的Excel图表模板对我来说现在的学习曲线太陡了。)当然,如果我能理解“for”循环,我会使用它们,但各种文档都没有,我看过的YouTube视频或coursera课程能够向我充分解释它们,让我真正理解如何将它们用于我需要的目的。我基本上掌握了这个概念,可以编写简单/无用的循环,但我无法将其转化为我自己的工作——我没有编程背景,也不完全理解我正在使用的大多数函数。有一天!使用R进行实际编程是我所知道的关于R的最温和的书。它是为那些没有编程经验的人编写的,并且有一个关于for循环的分步章节。不要担心没有得到东西。每一个程序员都有几年的时间,每件事都是新的和困难的。最终事情会有意义的。
co2_mins <- aggregate(. ~ Plant, CO2, min)
co2_medians <- aggregate(. ~ Plant, CO2, median)
co2_maxs <- aggregate(. ~ Plant, CO2, max)

out_file <- "myDataTables.csv"
sep <- ","
cat("Table 1: CO2 minima by plant\n", file = out_file)
write.table(co2_mins, out_file, append = TRUE, sep = sep)
cat("\nTable 2: CO2 medians by plant\n", file = out_file, append = TRUE)
write.table(co2_mins, out_file, append = TRUE, sep = sep)
cat("\nTable 3: CO2 maxima by plant\n", file = out_file, append = TRUE)
write.table(co2_mins, out_file, append = TRUE, sep = sep)
fns <- list(minima = min, medians = median, maxima = max)
for(i in seq_along(fns))
{
  summary_stats <- aggregate(. ~ Plant, CO2, fns[[i]])
  cat(
    if(i > 1) "\n",
    "Table ", i, ": CO2 ", names(fns)[i], " by plant\n", 
    file = out_file, 
    sep = "",
    append = i > 1
  )
  write.table(
    summary_stats, 
    out_file, 
    append = TRUE, 
    sep = ","
  )
}
list_tables 
[[1]]
Table1 
[[2]]
Table2
[[3]]
Table3
[[4]]
Table4

 write.table( rbind(list_tables[[i]], ""), path-filename, append=T, ....)