R:固定宽度左对齐

R: Fixed widths aligned left

我正在尝试以这种方式将 data.frame 保存到文件中:

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

所以它从左边而不是右边用空格填充。

我该如何解决?

write.fwfformat的帮助页面所示:justify参数仅适用于字符列。使用 format 似乎无法左对齐数字。

一种方法是首先将数字列手动转换为字符列,例如,sprintf:

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

%d表示要格式化整数,12是字段宽度,-表示左对齐。

我必须说,这就是我在编写固定宽度文件时通常做的事情:首先将所有列转换为具有正确宽度的字符等,然后执行:

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