Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 格式化打印语句_R - Fatal编程技术网

R 格式化打印语句

R 格式化打印语句,r,R,我想格式化print语句的输出,这样print语句中的元素 由一个均匀的小间隙隔开,间隙为1、3或5个空空间。是吗 可能吗 在下面的示例中,我认为print语句中的所有元素都假定为 只要打印语句中的第一个元素(这里只要aa1或aa2) print.gap语句不会产生所需的格式。它只是增加了一个 每个元素之间的附加常量空间数 aa1 <- 'abcdefghijklmnopqrstuvwxyz' aa2 <- 'abc' bb <- 10 cc <- 222 pri

我想格式化print语句的输出,这样print语句中的元素 由一个均匀的小间隙隔开,间隙为1、3或5个空空间。是吗 可能吗

在下面的示例中,我认为print语句中的所有元素都假定为 只要打印语句中的第一个元素(这里只要
aa1
aa2

print.gap
语句不会产生所需的格式。它只是增加了一个 每个元素之间的附加常量空间数

aa1 <- 'abcdefghijklmnopqrstuvwxyz'
aa2 <- 'abc'

bb  <- 10
cc  <- 222

print(c(aa1,bb,cc))

# [1] "abcdefghijklmnopqrstuvwxyz" "10"                         "222" 

print(c(aa2,bb,cc))

# [1] "abc" "10"  "222"

# desired output:

# [1] "abcdefghijklmnopqrstuvwxyz"   "10"   "222" 
#
# or
#
# [1] "abcdefghijklmnopqrstuvwxyz"   10   222 

aa1这会让你半途而废:

x <- c(aa1,bb,cc)

options(useFancyQuotes = FALSE)
cat(paste(dQuote(x), collapse="   "), "\n")
# "abcdefghijklmnopqrstuvwxyz"   "10"   "222" 

(如果向量元素之间需要一个以上的空格,则需要调用
gsub()
,因为
strwrap()
会破坏输入中的空格。)

我会将我的评论作为答案发布

您可以创建自己的
print.character
方法,并使用
strwrap
将行长度换行

不幸的是,
strwrap
破坏了所有的空白,并用一个空格代替它

print.character <- function(x, width = getOption('width'), .sep = '  '){
  cat(paste(strwrap(paste(dQuote(x), collapse = .sep, sep =.sep), width),  
  collapse = '\n'), '\n')
}
x <- c(aa1,bb,cc)
print(x)
## "abcdefghijklmnopqrstuvwxyz" "10" "222"
print(rep(x,10))
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222" 

我不确定你要找的是什么——你想要一个固定的1、3或5个空格的间隔,每次相同,还是不同?否则,
sprintf()
粘贴(aa1,bb,cc,sep=“”)
可能是您所需要的。使用
strwrap
以合理的长度进行包装(例如
options()$width
)例如
cat(strwrap(粘贴(rep(dQuote(x),10),collapse=“”),80),“\n”)
@mnel。美好的不幸的是,
cat(strwrap(粘贴(rep(dQuote(x),10),collapse=“”),80),sep=“\n”)
似乎在元素之间只留下一个空格,而不管您在
collapse=
参数中指定了多少。。。有没有办法解决这个问题?我只是想把它写下来作为一个答案,然后发现了同样的问题。仍在寻找解决方案,就在这里。我认为这属于你的答案,而不是我的,因为
strwrap()
是你的主意,所以如果你认为它工作得足够好,请随意编辑你的,添加它:
cat(gsub(“,”),strwrap(粘贴(rep(dQuote(x),10),collapse=“”),70)),sep=“\n”)
print.character <- function(x, width = getOption('width'), .sep = '  '){
  cat(paste(strwrap(paste(dQuote(x), collapse = .sep, sep =.sep), width),  
  collapse = '\n'), '\n')
}
x <- c(aa1,bb,cc)
print(x)
## "abcdefghijklmnopqrstuvwxyz" "10" "222"
print(rep(x,10))
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
## "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222" 
print('Does not work  with strings with  variable spaces that you \n might \t \t \t want to keep')
"Does not quite work with strings with variable spaces that you might want to keep"