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