在R中写入长度不相同的行

在R中写入长度不相同的行,r,cat,R,Cat,我需要为另一个(不是R)程序准备数据。该结构是一个标题=1行3列,然后是数据–几行2列,然后是另一个标题(1x3)和数据(nx2)。。很多次。我在最后一列数据中准备了带有标题和(“”)的数据。但我需要去掉数据部分的最后一列,因为当我尝试使用write函数将其保存到文件时,我会得到一个额外的选项卡。下面是一个示例数据和我需要得到的结果。 我可以写入行长度不相同的文件吗 tp5 <- data.frame(Depth_Date=double(5), Temp2=double(5), lt=in

我需要为另一个(不是R)程序准备数据。该结构是一个标题=1行3列,然后是数据–几行2列,然后是另一个标题(1x3)和数据(nx2)。。很多次。我在最后一列数据中准备了带有标题和(“”)的数据。但我需要去掉数据部分的最后一列,因为当我尝试使用write函数将其保存到文件时,我会得到一个额外的选项卡。下面是一个示例数据和我需要得到的结果。 我可以写入行长度不相同的文件吗

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")
我得到的结构-

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}
i、 e.在文件的数据部分使用额外的制表符。

由于制表符被视为“空白”字符,您可以使用
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" )

x看看这个可以解决你问题的答案:用NA填充并不能解决我的问题,因为在写入文件时,NA仍然有分隔符,我需要去掉。谢谢-42!这正是我需要的!
 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" )