在R中逐行打印文本向量
我意外地得到了一个由函数capture.output生成的对象,它可以逐行打印,例如:在R中逐行打印文本向量,r,vector,printing,line,R,Vector,Printing,Line,我意外地得到了一个由函数capture.output生成的对象,它可以逐行打印,例如: > print(xxx) [1] "===============================================================================" [2] "Initial design evaluation" [3] ""
> print(xxx)
[1] "==============================================================================="
[2] "Initial design evaluation"
[3] ""
[4] "Initial OFV = 28.9197"
[5] ""
[6] "Initial design expected parameter "
然而,当我试图复制类似的字符串向量时,所有向量元素都打印在同一行上。e、 g:
> a <- c('a','b','c','d','e')
> print(a)
[1] "a" "b" "c" "d" "e"
我想知道是什么导致了打印中的独特行为。我认为这是控制台中可用水平空间的问题。在我的机器中,至少,当要打印的两个向量元素足够宽,以至于无法将它们放在一行中时,向量中的所有元素每行打印一个。我相信这就是你的
xxx
向量中第一个长的等号串所做的。我可以编写我用来检查这一点的代码,但这完全取决于我的控制台的宽度,因此我认为它对其他人没有用处。下面是一个尝试模拟print()
行为的函数:
print_oneperline <- function(x)
cat(sprintf(paste0('% ', floor(log10(length(x))) + 3,'s "%s"\n'),
paste0("[", seq_along(x), "]"), x), sep = "")
你是对的!!!一旦我通过打印删除了第一个长文本字符串(xxx[-1]),输出就会正常。如果你想一行一行地打印一些东西,这是一个有趣的技巧。非常感谢。我很高兴它成功了。别忘了把答案标为正确的,这样别人就能找到。我确实标了。如果使用Rstudio,这应该不是一个罕见的问题。奇怪的是,它在我看来并没有那么明显。在任何情况下,如果您想要控制输出在控制台中的显示方式,则始终可以使用
cat
:cat(xxx)
将打印每个元素,即使它们非常宽。如果要以不同的行打印x
,可以执行以下操作:cat(粘贴(a,collapse='\n'))
。
print_oneperline <- function(x)
cat(sprintf(paste0('% ', floor(log10(length(x))) + 3,'s "%s"\n'),
paste0("[", seq_along(x), "]"), x), sep = "")
letters[1:5]
[1] "a" "b" "c" "d" "e"
print_oneperline(letters[1:5])
[1] "a"
[2] "b"
[3] "c"
[4] "d"
[5] "e"
xxx <- rep(c(
"===============================================================================",
"Initial design evaluation", "", "Initial OFV = 28.9197",
"Initial design expected parameter "), 3)
xxx # regular print
[1] "==============================================================================="
[2] "Initial design evaluation"
[3] ""
[4] "Initial OFV = 28.9197"
[5] "Initial design expected parameter "
[6] "==============================================================================="
[7] "Initial design evaluation"
[8] ""
[9] "Initial OFV = 28.9197"
[10] "Initial design expected parameter "
[11] "==============================================================================="
[12] "Initial design evaluation"
[13] ""
[14] "Initial OFV = 28.9197"
[15] "Initial design expected parameter "
> print_oneperline(xxx)
[1] "==============================================================================="
[2] "Initial design evaluation"
[3] ""
[4] "Initial OFV = 28.9197"
[5] "Initial design expected parameter "
[6] "==============================================================================="
[7] "Initial design evaluation"
[8] ""
[9] "Initial OFV = 28.9197"
[10] "Initial design expected parameter "
[11] "==============================================================================="
[12] "Initial design evaluation"
[13] ""
[14] "Initial OFV = 28.9197"
[15] "Initial design expected parameter "
options(width=10)