【发布时间】:2015-01-20 22:51:37
【问题描述】:
R 的 abbreviate() 可用于将数据帧的列名截断为设定长度,并通过良好的检查确保唯一性等:
abbreviate(names(dframe), minlength=2)
当然,我们可以使用这个函数在原地缩写列名,然后打印出更改后的数据框
>>names(dframe) <- abbreviate(names(dframe), minlength=2)
>>dframe
但我想打印出带有缩写列名的数据框而不在此过程中更改数据框。希望这可以通过 print() 调用中的简单格式选项来完成,尽管我通过打印和格式方法(如 print.data.frame)的帮助页面进行搜索并没有找到任何明显的解决方案(可用选项似乎更多用于格式化列值,而不是它们的名称)。
那么,print() 或 format() 是否有任何选项可以在列名上调用 abbreviate()?如果没有,有没有办法在将它传递给 print() 之前将 abbreviate() 应用于数据帧的列名,而不改变传递的数据帧?
我想得越多,我就越认为唯一的方法是向 print() 传递一个带有已经缩写的列名的数据框的副本。但这对我来说不是解决方案,因为我不想在交互式会话期间更新原始副本时不断更新此副本。原始列名必须保持不变,因为我使用 which(colnames(dframe)=="name_of_column") 与数据交互。
我的最终目标是在使用 Server Auditor 等 ssh 应用程序时,在移动设备的小屏幕上更好地远程工作。如果列名仅缩写为 2-3 个字符,我仍然可以识别它们,但可以在屏幕上容纳更多数据。或许还有更适合压缩打印的 R 包?
【问题讨论】: