Записать в файл строки не одинаковой длины в R - PullRequest
1 голос
/ 03 февраля 2020

Мне нужно подготовить данные для другой (не 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}

т.е. с дополнительной вкладкой в ​​части данных файла.

1 Ответ

1 голос
/ 03 февраля 2020

Поскольку вкладки считаются пробельными символами, вы можете удалить конечные (или начальные) вкладки с помощью функции 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" )
...