查看数据帧的内容时是不是可以截断输出?
Posted
技术标签:
【中文标题】查看数据帧的内容时是不是可以截断输出?【英文标题】:Is it possible to truncate output when viewing the contents of dataframes?查看数据帧的内容时是否可以截断输出? 【发布时间】:2012-01-12 21:05:47 【问题描述】:我有一个包含一些很长的“cmets”列的数据框。当我让它们显示时,它们被分成不同的块,很难跨行阅读。是否可以更改 R 中的设置或修改对 data.frame 的调用以截断一定长度的字符串?
示例:3 列数据框
data.frame(cbind(rep(1,5),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5)),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5))))
在我的屏幕上看到的结果数据框:
X1 X2
1 1 very very long obnoxious character string here
2 1 dog
3 1 cat
4 1 dog
5 1 5
X3
1 very very long obnoxious character string here
2 dog
3 cat
4 dog
5 5
【问题讨论】:
Printing dataframes with long strings in R 的可能重复项 【参考方案1】:我推荐一种像这样的显式方式:
f <- function(x) data.frame(lapply(x, substr, 1, 5))
用法:
> f(d)
X1 X2 X3
1 1 very very
2 1 dog dog
3 1 cat cat
4 1 dog dog
5 1 5 5
虽然可以更改默认行为,但我不推荐:
body(format.data.frame)[[5]] <- quote(for (i in 1L:nc) rval[[i]] <- substr(format(x[[i]], ..., justify = justify), 1, 5))
unlockBinding("format.data.frame", baseenv())
assign("format.data.frame", format.data.frame, pos = baseenv())
lockBinding("format.data.frame", baseenv())
rm(format.data.frame)
用法:
> d
X1 X2 X3
1 1 very very
2 1 dog dog
3 1 cat cat
4 1 dog dog
5 1 5 5
【讨论】:
太棒了!我对正则表达式的探索还没有把我带到 substr ——现在我有了一个起点,可以将它添加到我的工具箱中。以上是关于查看数据帧的内容时是不是可以截断输出?的主要内容,如果未能解决你的问题,请参考以下文章