Сохранить текст, который не находится в форме таблицы, как файл TSV - PullRequest
0 голосов
/ 04 января 2019

У меня, вероятно, глупый вопрос. Можно ли сохранить несколько строк текста в файле TSV? Мой фрейм данных:

master <- data.frame(A=c(1,1,2,2,3,3,4,4,5,5), B=c(1,2,3,3,4,5,6,6,7,8),C=c(5,2,5,7,7,5,7,9,7,8),D=c(1,2,5,3,7,5,9,6,7,0))

    write.table(
for(i in 1:nrow(master)){
  writeLines(c(paste("A",master[i,1]),
               paste("B",master[i,2]),
               paste("C",master[i,3]),
               paste("D",master[i,4])
  ))
},
file="Rat.tsv", quote=FALSE, sep='\t', col.names = NA
)

Когда я делаю это, я получаю в результате пустой файл размером 2B, но ожидаемый вывод должен быть таким, как показано ниже: по крайней мере, это то, что я получаю перед использованием write.table().

A 1
B 1
C 5
D 1
A 1
B 2
C 2
D 2
A 2
B 3
C 5
D 5
A 2
B 3
C 7
D 3
A 3
B 4
C 7
D 7
A 3
B 5
C 5
D 5
A 4
B 6
C 7
D 9
A 4
B 6
C 9
D 6
A 5
B 7
C 7
D 7
A 5
B 8
C 8
D 0

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Я переработал это из старой функции, так что это может быть не лучшим способом, но, похоже, это создает вывод, который вы предоставили:

master <- data.frame(A=c(1,1,2,2,3,3,4,4,5,5), B=c(1,2,3,3,4,5,6,6,7,8),C=c(5,2,5,7,7,5,7,9,7,8),D=c(1,2,5,3,7,5,9,6,7,0))

### Close any connections
closeAllConnections()

### Make file name and open connection
fileName_v <- "test.tsv"
file_conn <- file(fileName_v)

for (i in 1:nrow(master)) {

  ### Make line
  out <- c(paste("A",master[i,1]),
           paste("B",master[i,2]),
           paste("C",master[i,3]),
           paste("D",master[i,4]))

  ### Write line
  if (i == 1) {
    writeLines(out, file_conn)
  } else {
    file_conn <- file(fileName_v, "a")
    write(out, file_conn, append = T)
  }
}

closeAllConnections()
0 голосов
/ 04 января 2019

Функция writeLines записывает в стандартный вывод и возвращает NULL, что, вероятно, заканчивается в файле tsv. Удаление вызова writeLines дает этот код, который что-то записывает в файл.

write.table(
    x=c(paste("Duplicate Set:"),
        paste("Source data rows:"),
        paste("Rows differ with respect to Column(s)")
    ),
    file="Rat.tsv", quote=FALSE, sep='\t', col.names = NA)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...