我试图以这种方式将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
因此它从左侧填充空格而不是右侧。
我该如何解决?
答案 0 :(得分:1)
由于write.fwf
和format
的帮助页面指示:justify
参数仅适用于字符列。似乎不可能使用format
保留对齐数字。
执行此操作的一种方法是首先使用例如sprintf
手动将数字列转换为字符列:
mydata$V1 <- sprintf("%-12d", mydata$V1)
%d
表示您要格式化整数,12表示字段的宽度,-
表示左对齐。
我必须说,这是我在编写固定宽度文件时通常所做的事情:首先将所有列转换为具有正确宽度等的字符,然后执行:
lines <- do.call(paste0, mydata)
writeLines(lines, "myfile.txt")