我如何通过在 R 中使用 cat 来解决这个对齐问题,它会一直向左对齐而不是向右对齐
Posted
技术标签:
【中文标题】我如何通过在 R 中使用 cat 来解决这个对齐问题,它会一直向左对齐而不是向右对齐【英文标题】:How can i fix this alignment issue with using cat in R, where it keeps aligning a bit to the left instead of right 【发布时间】:2021-08-07 10:33:44 【问题描述】:我试图让我的输出看起来像这样,它显示所有内容都向右对齐并且间隔均匀: Expected output
但由于某种原因,我自己的输出最终被移到了左边:
Board(playerA, header = TRUE)
Name 0s 1s 2s 3s 5s X Out Tot
T Smith 1 1 1 2 2 0 0 19
以下代码是一个具有以下属性的矩阵:
initialise <- function(name)
matrix(
rep(0, 8),
nrow = 1,
ncol = 8,
byrow = TRUE,
dimnames = list(name,c("0s", "1s", "2s", "3s", "5s", "X", "Out", "Tot")
)
)
这是我为了打印矩阵并将列归类到“名称”一词以及空格并使其看起来均匀而执行的代码:
Board <- function(player, header = FALSE)
if (header)
cat(" Name ")
for (name in colnames(player))
cat(" ")
cat(format(name, width = 4))
cat("\n")
cat(rownames(player))
for (i in 1:length(player))
cat(" ")
cat(format(player[i], width = 4))
#test code
playerA <- initialise("T Smith")
Board(playerA, header = TRUE)
如果有人能提供帮助,我将不胜感激!
【问题讨论】:
@GKi 你能说得更具体点吗? @GKi 抱歉没有工作导致它未对齐 请不要在问题中编辑解决方案公告。接受(即单击旁边的“勾号”)现有答案之一,如果有的话。如果现有答案尚未涵盖您的解决方案,您还可以创建自己的答案,甚至接受它。 【参考方案1】:您必须将播放器名称扩展/修剪到标题中cat(" Name ")
的宽度。
Board <- function(player, header = FALSE)
if (header)
cat(" Name")
for (name in colnames(player))
cat(" ")
cat(format(name, width = 4, justify = "right"))
cat("\n")
cat(strtrim(paste(rownames(player), " "), 7))
for (i in 1:length(player))
cat(" ")
cat(format(as.character(player[i]), width = 4, justify = "right"))
Board(playerA, header = TRUE)
# Name 0s 1s 2s 3s 5s X Out Tot
#T Smith 0 0 0 0 0 0 0 0 0
【讨论】:
只需删除 Name 后面的空格,并在strtrim
中减少它。 -> 查看更新。以上是关于我如何通过在 R 中使用 cat 来解决这个对齐问题,它会一直向左对齐而不是向右对齐的主要内容,如果未能解决你的问题,请参考以下文章
Shell脚本编程小技巧-如何解决脚本中多行重定向结束符不用对齐到行首