我想格式化print语句的输出,以便print语句中的元素 由一个小的均匀间隙隔开,间隙为1,3或5个空隙。就是它 可能的?
在下面的例子中,我认为print语句中的所有元素都被认为是
只要是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
感谢您的任何建议。也许我必须使用cat
语句和sprintf
而不是print
语句。也许有一些变体:How to print R variables in middle of String
答案 0 :(得分:4)
这会让你在那里:
x <- c(aa1,bb,cc)
options(useFancyQuotes = FALSE)
cat(paste(dQuote(x), collapse=" "), "\n")
# "abcdefghijklmnopqrstuvwxyz" "10" "222"
我说“中途”因为上面的代码没有处理换行:如果你把一个非常长的字符串矢量给它,它们都将被用于一个非常长的非包装线...
编辑以显示一种包裹线条的方法:
您可以使用strwrap()
(感谢@mnel)和gsub()
的组合来获取换行符,:
xs <- c(x,x,x,x)
cat(gsub("\" \"", "\" \"",
strwrap(paste(dQuote(xs), collapse=" "), 70)), sep="\n")
# "abcdefghijklmnopqrstuvwxyz" "10" "222" "abcdefghijklmnopqrstuvwxyz"
# "10" "222" "abcdefghijklmnopqrstuvwxyz" "10" "222"
# "abcdefghijklmnopqrstuvwxyz" "10" "222"
(如果在向量元素之间需要多个空格,则需要调用gsub()
,因为strwrap()
会破坏输入中的空格。)
答案 1 :(得分:2)
我会发表评论作为答案
您可以创建自己的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"
在字符变量
中使用空格时,它将无法正常工作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"