R 在数据框打印期间缩写列名
R的缩写()用于将数据帧的列名截断为设定长度,并进行精确检查以确保唯一性等:R 在数据框打印期间缩写列名,r,mobile,printing,R,Mobile,Printing,R的缩写()用于将数据帧的列名截断为设定长度,并进行精确检查以确保唯一性等: abbreviate(names(dframe), minlength=2) 当然,可以使用此函数在适当的位置缩写列名,然后打印出修改后的数据帧 >>names(dframe) <- abbreviate(names(dframe), minlength=2) >>dframe 名称(dframe)>dframe 但是我想用缩写的列名打印数据框,而不需要在此过程中更改数据框。希望这可
abbreviate(names(dframe), minlength=2)
当然,可以使用此函数在适当的位置缩写列名,然后打印出修改后的数据帧
>>names(dframe) <- abbreviate(names(dframe), minlength=2)
>>dframe
名称(dframe)>dframe
但是我想用缩写的列名打印数据框,而不需要在此过程中更改数据框。希望这可以通过print()调用中的一个简单的format选项来实现,尽管我在print的帮助页和format方法(如print.data.frame)中的搜索没有找到任何明显的解决方案(可用选项似乎更多地用于格式化列值,而不是列名称)
那么,print()或format()是否有对列名调用缩写()的选项?如果没有,在将数据帧传递给print()之前,是否有方法将缩写()应用于数据帧的列名,而不改变传递的数据帧
我想得越多,就越觉得唯一的方法是向print()传递数据框的一个副本,其中包含已缩写的列名。但这对我来说不是一个解决方案,因为我不想在交互式会话中更新原始副本时不断更新此副本。原始列名必须保持不变,因为我使用哪个(colnames(dframe)=“name\u of_column”)与数据接口
我的最终目标是在使用ssh应用程序(如ServerAuditor)时,在我的移动设备的小屏幕上远程工作得更好。如果列名仅缩写为2-3个字符,我仍然可以识别它们,但可以在屏幕上显示更多数据。甚至可能有更适合压缩打印的R包?只需重写
print.data.frame
:
print.data.frame <-
function(x) setNames( print(x),
abbreviate(names(dframe), minlength=2) )
print.data.frame您可以定义自己的打印方法
print.myDF <- function(x, abbr = TRUE, minlength = 2, ...) {
if (abbr) {
names(x) <- abbreviate(names(x), minlength = minlength)
}
print.data.frame(x, ...)
}
好的,偷取BondedDust的答案:-)好的,很简单,添加了类和abbr
的默认参数,做得很好!Duh函数已经可以与副本一起使用,这样就不会改变原始文件。一、 同样,定义类
也是一个非常干净的解决方案。这将成为noob未来编程实践的一部分:)
class(iris) <- c("myDF", class(iris))
head(iris, 3)
# S.L S.W P.L P.W Sp
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
print(head(iris, 3), abbr = FALSE)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
print(head(iris, 3), minlength = 5)
# Spl.L Spl.W Ptl.L Ptl.W Specs
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa