我无法右对齐 table 中列中的数据

I cannot right-align the data in a column in a table

我无法右对齐 table 中的列中的数据(在第五列中)。当我打印为 txt 时,列中的数字由于减号而未对齐。 (在第五栏)

WINGEN01    20001   1.02000   0.09000   -1.37000   0.25000   0.19000   0.09000
WINGEN01    20002   1.07000   0.10000   -2.02000   0.25000   0.25000   0.09000
WINGEN01    20003   0.53000   0.09000   0.33000   0.45000   0.23000   0.09000
WINGEN01    20004   1.32000   0.19000   1.23000   0.09000   0.23000   0.03000
WINGEN01    20005   1.16000   0.16000   0.62000   0.14000   0.26000   0.04000
WINGEN01    20006   1.28000   0.15000   0.51000   0.11000   0.20000   0.04000
WINGEN01    20007   0.98000   0.13000   0.64000   0.15000   0.14000   0.05000
WINGEN01    20008   1.17000   0.15000   0.88000   0.10000   0.20000   0.03000
WINGEN01    20009   0.42000   0.06000   -1.43000   0.60000   0.19000   0.10000
WINGEN01    20010   1.06000   0.40000   3.18000   0.52000   0.22000   0.02000
WINGEN01    20011   1.28000   0.15000   0.76000   0.10000   0.21000   0.03000
WINGEN01    20012   0.47000   0.06000   -1.30000   0.57000   0.22000   0.10000
WINGEN01    20013   1.14000   0.14000   0.97000   0.10000   0.16000   0.03000




write.table(Y_14_PAR, paste("Y_14_PAR.PAR"),  quote = F, row.names = F, col.names =F,sep = "   ")

sprintf 可能是您需要的命令。它是属于 base R 的 C 风格字符串格式化命令。示例如下。

data.frame(a = sprintf("%-1.5f", pi*-3:3))

# output NOT RUN

         a
1 -9.42478
2 -6.28319
3 -3.14159
4  0.00000
5  3.14159
6  6.28319
7  9.42478

# NOT RUN

请注意,左对齐数字的是 % 后面的减号。没有正确的理由我可以说,但我认为它会完成这项工作。否则,替换为 + 以强制 +/- 的符号。

还要确保将函数包装在 as.numeric() 中,以免意外强制转换数据类型。

如果您只对出于可视化目的对齐列感兴趣,请考虑以下软件包之一。

编织

library(knitr)
kable(data.frame(a = pi * -3:3))

# Results NOT RUN

|         a|
|---------:|
| -9.424778|
| -6.283185|
| -3.141593|
|  0.000000|
|  3.141593|
|  6.283185|
|  9.424778|

DT

library(DT)
datatable(data.frame(a = pi * -3:3),
   caption = "My nicely formatted table") %>% 
   formatRound(~a)

它们确实在控制台中工作,但在降价文档 (.RmD)、笔记本或闪亮的应用程序等中效果最好。