在R中逐行打印文本向量

在R中逐行打印文本向量,r,vector,printing,line,R,Vector,Printing,Line,我意外地得到了一个由函数capture.output生成的对象,它可以逐行打印,例如: > print(xxx) [1] "===============================================================================" [2] "Initial design evaluation" [3] ""

我意外地得到了一个由函数capture.output生成的对象,它可以逐行打印,例如:

> 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)