gpt4 book ai didi

r - 如何使用 print 或 cat 缩进摘要等多行输出的输出,并保持列对齐?

转载 作者:行者123 更新时间:2023-12-04 09:44:40 24 4
gpt4 key购买 nike

这个问题可能概括为打印任何类型的多行输出,并保持列对齐。我的实际问题涉及 summary.default 的输出。

我正在尝试将 2 的倍数的缩进添加到 summary.default 函数的 cat 输出中。我用catprint做了一些尝试,也引用了一些相关的答案,但到目前为止都失败了。

f <- function(x) {
s <- summary.default(x)
liner <- Reduce(paste0, rep("-", 70))
cat("\n", liner, "\n") ## ATT 1. -------------------------------
cat("\n", "foo first attempt", "\n")
cat("\n--|\n")

print(round(s, 3)) #

cat("\n----|\n")
cat("\n *additional information\n")
cat("\n", liner, "\n") ## ATT 2. -------------------------------
cat("\n", "foo second attempt", "\n")
cat("\n--|\n")

print(unname(as.data.frame(cbind(" ", t(attr(s, "names"))))), row.names=F) #
print(unname(as.data.frame(cbind(" ", t(round(unclass(s), 3))))), row.names=F) #

cat("\n----|\n")
cat("\n *additional information\n")
cat("\n", liner, "\n") ## ATT 3. -------------------------------
cat("\n", "foo third attempt", "\n")
cat("\n--|\n")
cat("\n ", attr(s, "names"), "\n")

cat("\n ", round(s, 3), "\n") #

cat("\n----|\n")
cat("\n *additional information\n")
}

> x <- rnorm(100)
> f(x)

----------------------------------------------------------------------

foo first attempt

--|
Min. 1st Qu. Median Mean 3rd Qu. Max.
-2.069 -0.654 -0.092 -0.075 0.696 1.997

----|

*additional information

----------------------------------------------------------------------

foo second attempt

--|

Min. 1st Qu. Median Mean 3rd Qu. Max.

-2.069 -0.654 -0.092 -0.075 0.696 1.997

----|

*additional information

----------------------------------------------------------------------

foo third attempt

--|

Min. 1st Qu. Median Mean 3rd Qu. Max.

-2.069 -0.654 -0.092 -0.075 0.696 1.997

----|

*additional information

---| 表示所需的缩进。 第一次尝试 没有任何缩进。 第二次尝试 更好,但行与行之间有额外的空间,并且在四舍五入到不同数字时不能概括。在尝试 3 时,列不再对齐。

如何使用 R 附带的功能获得所需的输出?

期望的输出:

---------------------------------------------------------------------- 

foo some text

Min. 1st Qu. Median Mean 3rd Qu. Max.
-2.069 -0.654 -0.092 -0.075 0.696 1.997

*additional information

最佳答案

对于此任务,您可以连续使用 base r 的两个函数。有一个函数 capture.output 可以捕获像 print 这样的命令的输出。使用 paste 组合所需数量的空格,可以使用 writelines 将其写入标准输出,从而保留数据帧打印输出的行结构。要执行上述操作,请将打印输出中给出的所有信息作为 data.frame (df) 的示例进行组合。

df = data.frame("Min."=-2.069, "First Qu."= -0.654,  "Median"= -0.092   , "Mean"  =-0.075, "Third Qu."=  0.696,    "Max."=  1.997 )
writeLines(paste0(" ", capture.output(print(df, row.names = F))))

我添加了 roe.names = F,以禁止打印数据框的行号

关于r - 如何使用 print 或 cat 缩进摘要等多行输出的输出,并保持列对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62190567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com