在 R 中打开和保存“.dat”文件

Opening and Saving a ".dat" file in R

我目前正在尝试处理“.dat 文件”以更改文件中的某些值。我在用 read.delim() 将其导入 R 并运行。但是当我想再次保存文件时,格式改变了,我不能再使用了。我用了write.csv(Tin, file ="TinNew.dat")。 我希望屏幕截图有助于理解我的问题,我还留下了一段数据,作为可重现的示例。我想要与“编辑器(原始)”中显示的格式相同。我怎样才能做到这一点? 提前致谢

编辑原创:

编辑器(我尝试保存后):

Time [d]    T_in [degC]
0   2
-1  -1.00   0.00
1   3.08503 3.08503
2   2.01752 2.01752
3   2.4856  2.4856
4   2.14033 2.14033
5   2.35846 2.35846

有两个问题,header 和分隔符。 Header: 将测量单位和列名一起放在第一行是不切实际的,因为这会使 header 的创建变得困难。这在 R 中当然是可能的,但为了避免复杂化,让我们跳过第一行并在后面添加 header。

txt <- 
"Time [d] T_in [degC]
0   2
-1  -1.00   0.00
1   3.08503 3.08503
2   2.01752 2.01752
3   2.4856  2.4856
4   2.14033 2.14033
5   2.35846 2.35846"

dat <- read.table(text=txt, skip=1)
names(dat) <- c("Time [d]",  "T_in [degC]")

请注意,我将数据直接嵌入到代码中,并从 txt 字符串而不是文件中读取。它与使用 read.table(file=filename, skip=1) 的文件相同。 read.table 的默认 分隔符 是白色 space,即 space 或制表符。

要写回文件,请使用 write.table 和以下选项:

write.table(dat, file="output.dat", sep=" ", quote=FALSE, row.names = FALSE)

这里我们再次使用 space " " 作为分隔符,但在这种情况下使用制表符 "\t" 可能会更好。

更多细节可以在帮助页面找到,在那里可以看到 read.delimwrite.csv 只是一个方便的功能,即 read.tablewrite.table 的版本具有不同的默认值。

替代方法

最后,我们看到第 2 行只有两个值,所以想法是分开处理 two-lines header 和数据。 readLines按原样分别读取n=2行,然后read.table读取数据。然后类似地进行写入:

header <- readLines("input.dat", n=2)
dat <- read.table(text=txt, skip=2)

writeLines(header, "output.dat")
write.table(dat, "output.dat", sep="\t", 
            quote=FALSE, col.names=FALSE, row.names = FALSE, append=TRUE)