r 将文本和数据框写入文件

con*_*nor 4 string r fwrite dataframe

将一些文本后跟数据框写入文件的最佳方法是什么?文本是通过将变量粘贴到字符串中来创建的。

示例所需的输出:

Here is some text.
This line has a variable: Hello World
Data frame below the line
=================
ID,val1,val2
1,2,3
2,4,6
3,6,9
4,8,12
5,10,15
6,12,18
7,14,21
8,16,24
9,18,27
10,20,30
Run Code Online (Sandbox Code Playgroud)

我可以用初始文本创建一个字符串:

myvar <- "Hello World"
out_string <- paste0("Here is some text.\n",
                     "This line has a variable: ", myvar, "\n",
                     "Data frame below the line\n",
                     "=================\n")
cat(out_string)
Run Code Online (Sandbox Code Playgroud)

我可以将数据帧写入文件:

library(data.table)

mydf <- data.frame(ID = 1:10, val1 = 1:10*2, val2 = 1:10*3)

fwrite(x = mydf,
   file = "path/file.txt",
   sep = ",",
   col.names=T)
Run Code Online (Sandbox Code Playgroud)

但我不确定如何最好地将这两者结合起来。

我认为最好将数据框粘贴到末尾out_string然后将其写入文件,但我的尝试失败了,例如

cat(paste0(out_string, mydf, collapse=''))
# Here is some text.
# This line has a variable: Hello World
# Data frame below the line
# =================
#   1:10Here is some text.
# This line has a variable: Hello World
# Data frame below the line
# =================
#   c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)Here is some text.
# This line has a variable: Hello World
# Data frame below the line
# =================
#   c(3, 6, 9, 12, 15, 18, 21, 24, 27, 30)
Run Code Online (Sandbox Code Playgroud)

spa*_*ian 6

可能有几种方法可以做到这一点。一个简单的是

cat(out_string, file = '/tmp/test.txt')
cat(paste0(colnames(mydf), collapse = ','), file = '/tmp/test.txt', append = T, sep = '\n')
cat(apply(mydf,1,paste0, collapse=','), file = '/tmp/test.txt', append = T, sep = '\n')
Run Code Online (Sandbox Code Playgroud)

当然,使用fwrite

cat(out_string, file = '/tmp/test.txt')
fwrite(x = mydf,
   file = "/tmp/test.txt",
   sep = ",",
   col.names=T,
   append=T)
Run Code Online (Sandbox Code Playgroud)