R:左边对齐的固定宽度

时间:2016-09-21 10:07:57

标签: r fixed-width

我试图以这种方式将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

因此它从左侧填充空格而不是右侧。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

由于write.fwfformat的帮助页面指示:justify参数仅适用于字符列。似乎不可能使用format保留对齐数字。

执行此操作的一种方法是首先使用例如sprintf手动将数字列转换为字符列:

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

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

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

lines <- do.call(paste0, mydata)
writeLines(lines, "myfile.txt")
相关问题