将文件写入文件后跟数据框的最佳方法是什么?通过将变量粘贴到字符串中来创建文本。
示例所需输出:
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
我可以使用初始文本创建一个字符串:
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)
我可以写一个数据帧到文件:
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)
但我不确定如何最好地将这两者结合起来。
我认为只是将数据框粘贴到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)
答案 0 :(得分:3)
可能有几种方法可以做到这一点。 一个简单的是
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')
当然,使用fwrite
:
cat(out_string, file = '/tmp/test.txt')
fwrite(x = mydf,
file = "/tmp/test.txt",
sep = ",",
col.names=T,
append=T)
答案 1 :(得分:1)
一种选择是建立一个连接,您可以使用writeLines
和write.csv
写入:
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")
mydf <- data.frame(ID = 1:10, val1 = 1:10*2, val2 = 1:10*3)
my_file <- file('file.csv', 'w')
writeLines(out_string, my_file, sep = '')
write.csv(mydf, my_file, quote = FALSE, row.names = FALSE)
close(my_file)
readLines('file.csv')
#> [1] "Here is some text."
#> [2] "This line has a variable: Hello World"
#> [3] "Data frame below the line"
#> [4] "================="
#> [5] "ID,val1,val2"
#> [6] "1,2,3"
#> [7] "2,4,6"
#> [8] "3,6,9"
#> [9] "4,8,12"
#> [10] "5,10,15"
#> [11] "6,12,18"
#> [12] "7,14,21"
#> [13] "8,16,24"
#> [14] "9,18,27"
#> [15] "10,20,30"
答案 2 :(得分:1)
还有另一种方式:
sink()
将打开与文件的连接。
sink("<your_new_file_name>")
out_string
df
sink()