【问题标题】:Vertically printed column names垂直打印的列名
【发布时间】:2016-02-24 13:47:39
【问题描述】:

我相信有意义的变量名。不幸的是,这通常意味着当我在 R 控制台中查看 data.frame 时会出现巨大的空白:

有没有办法告诉 R 垂直打印列名,像这样:

它不需要在控制台中,也许可以通过这种方式将表格绘制为PDF?


可执行代码,由 Ben Bolker 提供:

sample.table <- data.frame(a.first.long.variable.name=rep(1,7),
                           another.long.variable.name=rep(1,7),
                           this.variable.name.is.even.longer.maybe=rep(1,7)
                           )

【问题讨论】:

  • 请以文本形式提供您的代码,以便读者可以将其复制并粘贴到他们的 R 控制台中。
  • 我猜你可以将它渲染为 HTML 表格并通过 CSS 应用旋转。例如。 library(DT); datatable(setNames(mtcars, sprintf('&lt;div style="transform:rotate(-90deg);"&gt;%s&lt;/div&gt;', names(mtcars))), escape = F) (也许您可以将formatStyle 应用于列标题,但我没有看到如何)
  • 这是个主意,谢谢@lukeA。
  • @lukeA 你介意把你的评论作为答案吗,不能让它工作......
  • @zx8754 您是在浏览器中尝试过还是仅在 RStudio 查看器中尝试过?在浏览器中似乎仍然对我有用。

标签: r dataframe transpose columnname output-formatting


【解决方案1】:

如 cmets 中所述,您可以通过 CSS 应用旋转:

library(DT)
df <- mtcars
names(df) <- sprintf('<div style="transform:rotate(-90deg);margin-top:30px;">%s</div>', names(df))
dt <- datatable(df, escape = FALSE)
htmlwidgets::saveWidget(dt, tf<-tempfile(fileext = ".html"))
shell.exec(tf)

这在 RStudio 查看器中不起作用,但它在浏览器中起作用:

【讨论】:

  • 有什么方法可以调整列名的高度?例如,用colnames(df)[1] &lt;- "looooong_naaaame" 试试上面的代码
  • @zx8754 将 line-height:100px 的脉络中的内容添加到 css 中?
  • 你知道如何改变行高吗?也想用它
【解决方案2】:

不使用图形设备。 在普通旧控制台中工作的更好更简单的解决方法是: 打印表格的转置,现在列名变成了行名:

> t(sample.table)
                                        1 2 3 4 5 6 7
a.first.long.variable.name              1 1 1 1 1 1 1
another.long.variable.name              1 1 1 1 1 1 1
this.variable.name.is.even.longer.maybe 1 1 1 1 1 1 1

(要禁止默认获得的无用列名,请包含 sample.table &lt;- data.frame(row.names=1:7, ...

我一直这样做。热图、树状图、来自扩展分类的自动命名回归变量...

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多