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.fwf
和format
的帮助页面所示:justify
参数仅适用于字符列。使用 format
似乎无法左对齐数字。
一种方法是首先将数字列手动转换为字符列,例如,sprintf
:
mydata$V1 <- sprintf("%-12d", mydata$V1)
%d
表示要格式化整数,12是字段宽度,-
表示左对齐。
我必须说,这就是我在编写固定宽度文件时通常做的事情:首先将所有列转换为具有正确宽度的字符等,然后执行:
lines <- do.call(paste0, mydata)
writeLines(lines, "myfile.txt")
我正在尝试以这种方式将 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.fwf
和format
的帮助页面所示:justify
参数仅适用于字符列。使用 format
似乎无法左对齐数字。
一种方法是首先将数字列手动转换为字符列,例如,sprintf
:
mydata$V1 <- sprintf("%-12d", mydata$V1)
%d
表示要格式化整数,12是字段宽度,-
表示左对齐。
我必须说,这就是我在编写固定宽度文件时通常做的事情:首先将所有列转换为具有正确宽度的字符等,然后执行:
lines <- do.call(paste0, mydata)
writeLines(lines, "myfile.txt")