【问题标题】:Write to a file rows not in the same length in R写入R中长度不同的文件行
【发布时间】:2020-02-02 21:00:11
【问题描述】:

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

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}

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

【问题讨论】:

  • 查看这个可以解决您问题的答案:stackoverflow.com/questions/7196450/…
  • 用 NA 填充并不能解决我的问题,因为在写入文件时,NA 仍然有我需要去掉的分隔符。

标签: r cat


【解决方案1】:

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

【讨论】:

  • 谢谢-42!这正是我所需要的!
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2017-06-24
  • 2018-08-14
  • 1970-01-01
相关资源
最近更新 更多