如何在 R 中的 write.csv() 输出之前添加任意行文本?

Gim*_*ist 1 r shiny

最小的可重复示例

我有这个代码:

df <- data.frame(foo = 1:5, bar = 5:1)

bla <- "some text"

write.csv(df, "foobar.csv")
Run Code Online (Sandbox Code Playgroud)

我希望最终的 foobar.csv 看起来像这样:

some text

"","foo","bar"
"1",1,5
"2",2,4
"3",3,3
"4",4,2
"5",5,1
Run Code Online (Sandbox Code Playgroud)

更广泛的背景

这是 Shiny 应用程序的一部分,我在服务器功能中有这一点:

  output$dlcsv <- downloadHandler(
    filename = function() {
      paste0(format(Sys.time(), "%Y%M%e%H%M%S"), ".csv")
    },
    content = function(file) {
      write.csv(datareactive(), file)
    }
  )
Run Code Online (Sandbox Code Playgroud)

output$dlcsv是一个下载按钮,datareactive()是我导出到以今天的日期和时间命名的 csv 的数据框。我想在数据本身之前向文本文件添加一些行。因此,上述问题的解决方案需要在这种情况下起作用。

duc*_*ayr 5

您可以简单地使用cat()for bla,然后切换到write.table()fromwrite.csv()以便能够设置append = TRUE

df <- data.frame(foo = 1:5, bar = 5:1)

bla <- "some text"

cat(bla, "\n\n", file = "foobar.csv")

write.table(df, "foobar.csv", sep = ",", append = TRUE)
Run Code Online (Sandbox Code Playgroud)

结果foobar.csv

some text 

"foo","bar"
"1",1,5
"2",2,4
"3",3,3
"4",4,2
"5",5,1
Run Code Online (Sandbox Code Playgroud)