在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, ....)