我需要将一个
到目前为止,我已经使用了
我为您提供一些可运行的代码以及输出示例(每个输出行由“|”分隔)。
data.frame
对象转换为纯文本(类似于在控制台上的 print
输出)。到目前为止,我已经使用了
stringr
包创建了下面的函数,但我想知道是否存在一个已实现的函数或更高效的方法:toString.data.frame = function(object, ...) {
maxLen = max(
stringr::str_length(apply(object, c(1,2), as.character)),
stringr::str_length(names(object))
);
# data-frame to character matrix
txt = apply(object, c(1,2), stringr::str_pad, width=maxLen+5, side="left");
# concatenate the columns
txt = apply(txt, 1, paste, collapse="");
# concatenate the rows
txt = paste(txt, collapse="\n");
# add column names
txt = paste( # concatenate header and body
paste( # concatenate all the headers
stringr::str_pad( # add 5 spaces on the left of each header
stringr::str_pad(names(object), width=maxLen, side="right") # fill each header
, width=maxLen+5, side="left")
, collapse="")
, txt
, sep="\n");
return(txt);
}
我为您提供一些可运行的代码以及输出示例(每个输出行由“|”分隔)。
df = data.frame(hello=rnorm(1:15), world=rnorm(1:15));
cat(toString(object), "\n");
| a b |
| 0.217785930312173 1.35892062758937|
| -0.0529272009376736 -1.3537444650507|
| -0.0914533595349014 -0.283164123247757|
| 0.209099248751634 -0.994596208802379|
| 1.41207193727609 0.754568758899429|
| 0.0271570788346636 0.722728545001598|
| 1.09160395973882 -0.466194711071017|
| -0.676012596015548 0.247534965195453|
| 0.36022565974381 -0.318822054653857|
| 0.330251755314496 -0.379818935427323|
| 1.29858423625996 0.393100959746072|
| 1.79061048596737 0.124484229714237|
| -0.636849202004066 -1.48651181772674|
| 1.08795175312078 0.231693241998673|
| -0.810214549466222 -0.753200696904484|