写入 R 中长度不同的文件行

Write to a file rows not in the same length in R

我需要为另一个(不是 R)程序准备数据。结构是 header = 1 行 3 列,然后是数据——几行有 2 列,然后是另一个 header (1x3) 和数据 (nx2).. 很多次。我准备了带有 header 的数据和在最后一个数据列中与 (‘’) 组合的数据。但是我需要去掉数据部分的最后一列,因为当我尝试使用写函数将它保存到文件时,我得到了一个额外的选项卡。以下是示例数据和我需要获得的结果。 我可以写入行长度不同的文件吗?

tp5 <- data.frame(Depth_Date=double(5), Temp2=double(5), lt=integer(5))
tp5$Depth_Date <- c('2009-12-17',0,-1,-2,'2009-12-18')
tp5$Temp2 <- c(3,19.1,19.1,19,4)
tp5$lt <- c(2,'','','',2)

tp5
tp6 <- as.character(t(tp5))
write(tp6, file="tp6.dat", ncolumns=3, sep="\t")

我想要的结构 -(其中“=>”表示制表符,{CRLF} 表示行尾。)

2009-12-17=>3.0=>2{CRLF}
0=>19.1{CRLF}
-1=>19.1{CRLF}
-2=>19.0{CRLF}
2009-12-18=>4.0=>2{CRLF}

我得到的结构-

2009-12-17=>3.0=>2{CRLF}
0=>19.1=>{CRLF}
-1=>19.1=>{CRLF}
-2=>19.0=>{CRLF}
2009-12-18=>4.0=>2{CRLF}

即在文件的数据部分有额外的选项卡。

由于制表符被视为 "whitespace" 字符,您可以使用 trimws 函数删除尾随(或前导)制表符,然后将生成的向量写入一个文件,该文件是使用逐行创建的行粘贴操作:

 x <-  apply(tp5, 1, function(x) paste0(x,sep="\t",collapse=""))
 trimws(x)
# note that the tabs have been removed
[1] "2009-12-17\t 3.0\t2" "0\t19.1"             "-1\t19.1"            "-2\t19.0"           
[5] "2009-12-18\t 4.0\t2"

 write( trimws(x), "~/Downloads/txt.txt" )