2016-09-21 2 views
1

Я пытаюсь сохранить data.frame в файл таким образом:R: Фиксированная ширина выровненной влево

library(gdata) 
write.fwf(mydata,file = "myfile.txt",width = c(12, 7), eol="\r\n", colnames = FALSE, justify = "left") 

данные является очень просто:

V1 V2 
1 foo 
2 bar 
3 ter 
4 four 

Однако генерируемый вывод положить значение выровнены направо вместо левого:

  1 foo 
      2 bar 
etc 

вместо

1   foo 
2   bar 
etc 

поэтому он прокладывает слева с пробелами вместо справа.

Как это исправить?

ответ

1

В качестве справочной страницы write.fwf и format указывается: аргумент justify применяется только к столбцам символов. Не представляется возможным выровнять выровненный номер, используя format.

Один из способов сделать это было бы первым бросил числовой столбец символьного столбца вручную, используя, например, sprintf:

mydata$V1 <- sprintf("%-12d", mydata$V1) 

%d означает, что вы хотите форматировать целое число, то 12 является ширина поля и - указывает выравнивание влево.

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

lines <- do.call(paste0, mydata) 
writeLines(lines, "myfile.txt") 
+0

Ну на самом деле не confy :) особенно с большим количеством столбцов, но это нормально, если вы можете конвертировать столбцы с 'as.character' или пропускать' stringAsFactors' и т. д. – Randomize

Смежные вопросы