web-dev-qa-db-ja.com

きれいなdata.frames / tablesをコンソールに出力する

小さいdata.framesをより読みやすい方法でコンソールに出力する方法はありますか?

たとえば、コンソールに出力することは可能ですか?

library(MASS)   
iris[1:5, ]

  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
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa

なので

iris[1:5, ]

  +--------------+-------------+--------------+-------------+---------+
  | 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 |
4 |          4.6 |         3.1 |          1.5 |         0.2 |  setosa |
5 |          5.0 |         3.6 |          1.4 |         0.2 |  setosa |
  +--------------+-------------+--------------+-------------+---------+

大きい[data.frames]の場合、不必要な時間がかかることを理解していますが、それがオプションである場合は、小さいフレームをより構造化された方法で確認できるようにしたいと考えています。

特に、2つのテキストフィールドが隣接している場合、単語間の間隔は列間の間隔と同じサイズであるため、2つのフィールド間のパイプを使用してそれらを分離する方がはるかに簡単です。

ありがとう

21
Akhil Nair

それが誰かを助けるために、私はknitrkableが素敵なきれいなプリントを達成するという事実を偶然見つけました。上記の.Rprofile提案のいくつかと組み合わせると、これは私が考えていたものを達成しているようです。

> knitr::kable(head(iris))

| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species |
|------------:|-----------:|------------:|-----------:|:-------|
|          5.1|         3.5|          1.4|         0.2|setosa  |
|          4.9|         3.0|          1.4|         0.2|setosa  |
|          4.7|         3.2|          1.3|         0.2|setosa  |
|          4.6|         3.1|          1.5|         0.2|setosa  |
|          5.0|         3.6|          1.4|         0.2|setosa  |
|          5.4|         3.9|          1.7|         0.4|setosa  |
19
Akhil Nair

最近同じ問題が発生し、huxtableパッケージに遭遇しました。非常に柔軟性があり、コンソール出力を向上させるために少々やりすぎかもしれませんが、非常にうまく機能しました。

huxtableを使用して問題を解決する方法は次のとおりです。

_library(huxtable)
library(magrittr)

small_iris <- iris[1:5, ]

iris_hux <- 
  hux(small_iris) %>% 
  add_colnames() %>% 
  set_bold(row = 1, col = everywhere, value = TRUE) %>% 
  set_all_borders(TRUE)
_

私はすべての機能が自分自身のために語っていると思います。完全な概要については、 https://hughjonesd.github.io/huxtable/huxtable.html#adding-row-and-column-names を参照してください。

print_screen(iris_hux)(コンソールで!)

enter image description here

列名の下部の情報を抑制する方法はまだわかりません。誰かが知っているなら、コメントしてください!

EDIT:下部の列名を非表示にするには、print_screen()内で_colnames = FALSE_を使用します。

5
der_grund

あなたが試すことができるいくつかの方法があります。

  1. いくつかのヘルパー関数を.Rprofileに追加します。私のプロフィールでは、

    hh = function(d) 
       if(class(d)=="matrix"|class(d)=="data.frame") d[1:5,1:5]
    

    この関数は、データフレームの左上隅を印刷します。私も持っています

    ht = function(d, n=6) rbind(head(d, n), tail(d,n))
    
  2. データフレーム用の独自のS3印刷関数を作成します。

    print.data.frame = function(x, ..., digits = NULL, 
                            quote = FALSE, right = TRUE, 
                            row.names = TRUE) 
                        message("hi")
    
  3. パッケージを使用します。 dplyr。ただし、必要なのがきれいな印刷だけの場合、これは少しやりすぎです。

3
csgillespie

また、コンソールではなく(RStudio)ビューアーペインに出力を印刷する場合は、DTパッケージを使用することをお勧めします。

library(DT)
datatable(iris)

これにはいくつかの利点があると思います。出力はきれいで整然としており、パッケージは面倒になることなく大きなデータフレームを表示でき、起動するように高度にカスタマイズ可能です。

enter image description here

1
tifu

tibbleは、コンソールでカラー形式で印刷されます。

library(tidyverse)

x <- as_tibble(mtcars)
x

enter image description here

1
zx8754