查看数据框内容时截断输出是否可能?

5
我有一个数据框,其中某些“注释”列非常长。当我将它们显示出来时,它们会被分成不同的块,使得跨行阅读变得困难。是否可以在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

1个回答

12

我建议使用这种显式的方式:

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,现在我有一个加入工具箱的起点。 - N Brouwer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接