проблема
У меня есть входной файл с разделителями табуляции, который выглядит так:
Variable [1] Variable [2]
111 Something
Nothing 222
Первая строка представляет имена столбцов, а две следующие строки представляют значения столбцов. Как видите, имена столбцов содержат как пробелы, так и некоторые хитрые знаки.
Теперь я хочу импортировать этот файл в R, а затем снова вывести его в новый текстовый файл, чтобы он выглядел точно так же, как и ввод. Для этого я создал следующий скрипт (при условии, что входной файл называется «Test.txt»):
file <- "Test.txt"
x <- read.table(file, header = TRUE, sep = "\t")
write.table(x, file = "TestOutput.txt", sep = "\t", col.names = TRUE, row.names = FALSE)
Из этого я получаю вывод, который выглядит следующим образом:
"Variable..1." "Variable..2."
"1" "111" "Something"
"2" "Nothing" "222"
Теперь есть несколько проблем с этим выводом.
- Знаки "[" и "]" были преобразованы в точки.
- Пробелы были преобразованы в точки.
- Кавычки появились везде.
Как сделать так, чтобы выходной файл выглядел точно так же, как и входной файл?
Что я пробовал до сих пор
Что касается проблемы номер один и два, я попытался указать имена столбцов, создав внутренний вектор c("Variable [1]", "Variable [2]")
, а затем используя параметр col.names
для read.table()
. Это дает мне точно такой же вывод. Я также пробовал разные кодировки, через опцию encoding
для table.read()
. Если я посмотрю на созданный внутри вектора, упомянутый выше, он печатает имена переменных так, как они должны быть напечатаны, поэтому я предполагаю, что есть проблема с преобразованием между фазами "text -> R" и "R -> text" процесс. То есть, если я посмотрю на фрейм данных, созданный read.table()
без каких-либо внутренних векторов, имена столбцов будут неправильными.
Что касается проблемы номер три, я в значительной степени заблудился и не смог понять, что мне следует попробовать.