2016-09-21 115 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.fwfformat的帮助页面指示: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