リスト型コラム
を扱うこともできる## [1] 28
## [1] "add_column" "add_row" "as_data_frame"
## [4] "as_tibble" "column_to_rownames" "data_frame"
## [7] "data_frame_" "enframe" "frame_data"
## [10] "glimpse" "has_name" "has_rownames"
## [13] "is.tibble" "is_tibble" "is_vector_s3"
## [16] "knit_print.trunc_mat" "lst" "lst_"
## [19] "obj_sum" "remove_rownames" "repair_names"
## [22] "rownames_to_column" "tbl_sum" "tibble"
## [25] "tibble_" "tribble" "trunc_mat"
## [28] "type_sum"
# tibble関数
# --- そのまま文字列で格納される
tibble(x = letters) %>% str()
## Classes 'tbl_df', 'tbl' and 'data.frame': 26 obs. of 1 variable:
## $ x: chr "a" "b" "c" "d" ...
# data.frame関数
# --- 文字列がファクターに自動変換される
data.frame(x = letters) %>% str()
## 'data.frame': 26 obs. of 1 variable:
## $ x: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
# tibble関数
# --- リスト要素をデータフレームの要素にする (リスト型コラム)
tibble(x = 1:3, y = list(1:5, 1:10, 1:20))
## # A tibble: 3 × 2
## x y
## <int> <list>
## 1 1 <int [5]>
## 2 2 <int [10]>
## 3 3 <int [20]>
# tibble関数
# --- そのまま表示される
tibble('crazy name' = 1) %>% names()
## [1] "crazy name"
# data.frame関数
# --- 空白の箇所に自動的に".(ドット)"が付けられる
data.frame('crazy name' = 1) %>% names()
## [1] "crazy.name"
tibble(x = 1:5, y = x ^ 2)
## # A tibble: 5 × 2
## x y
## <int> <dbl>
## 1 1 1
## 2 2 4
## 3 3 9
## 4 4 16
## 5 5 25
data.frame(x = 1:5, y = x ^ 2)
## Error in data.frame(x = 1:5, y = x^2): オブジェクト 'x' がありません
# tibble関数
# --- 遅延評価により以下のような定義も可能
tibble(x = 1:5, y = x ^ 2)
## # A tibble: 5 × 2
## x y
## <int> <dbl>
## 1 1 1
## 2 2 4
## 3 3 9
## 4 4 16
## 5 5 25
# data.frame関数
# --- エラーになる
data.frame(x = 1:5, y = x ^ 2)
## Error in data.frame(x = 1:5, y = x^2): オブジェクト 'x' がありません
xts
くらい?)# tibble関数
# --- row.names()の箇所でエラーとなる
X <- tibble(x = 1:5) %T>% print()
row.names(X) <- letters[1:5]
## Warning: Setting row names on a tibble is deprecated.
X
## # A tibble: 5 × 1
## x
## <int>
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
## # A tibble: 5 × 1
## x
## * <int>
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
# data.frame関数
# --- 行名を定義できる
Y <- data.frame(x = 1:5) %T>% print()
row.names(Y) <- letters[1:5]
Y
## x
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
## x
## a 1
## b 2
## c 3
## d 4
## e 5
# tibble関数
# --- 長さが1のベクトルは制限なくリサイクル
tibble(x = 1:4, y = 1)
## # A tibble: 4 × 2
## x y
## <int> <dbl>
## 1 1 1
## 2 2 1
## 3 3 1
## 4 4 1
# --- それ以外はリサイクル禁止でエラー
tibble(x = 1:4, y = 1:2)
## Error: Variables must be length 1 or 4.
## Problem variables: 'y'
# data.frame関数
# --- 長さが1のベクトルは制限なくリサイクル(同様)
data.frame(x = 1:4, y = 1)
## x y
## 1 1 1
## 2 2 1
## 3 3 1
## 4 4 1
# --- 長さが1以外でもリサイクルが途中で終わらなければ使える
data.frame(x = 1:4, y = 1:2)
## x y
## 1 1 1
## 2 2 2
## 3 3 1
## 4 4 2
# --- リサイクルが途中で終わるものはエラー
data.frame(x = 1:4, y = 1:3)
## Error in data.frame(x = 1:4, y = 1:3): arguments imply differing number of rows: 4, 3
# tibble関数
# --- 初めの10データのみ表示
tibble(x = 1:1000)
## # A tibble: 1,000 × 1
## x
## <int>
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
## 6 6
## 7 7
## 8 8
## 9 9
## 10 10
## # ... with 990 more rows
# data.frame関数
# --- 全て表示されるので一部のみ表示
data.frame(x = 1:1000) %>% head(5)
## x
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
$演算子
を使うtibble()
# tibble関数
X <- tibble(x = 1:3, y = 3:1)
# 複数列の場合はデータフレームと判断
X[, 1:2] %>% class()
## [1] "tbl_df" "tbl" "data.frame"
# 単独列でもデータフレーム
X[, 1] %>% class()
## [1] "tbl_df" "tbl" "data.frame"
# 実際にtibbleクラスとして出力
X[, 1]
## # A tibble: 3 × 1
## x
## <int>
## 1 1
## 2 2
## 3 3
# $演算子を使うとベクトル出力
X$x
## [1] 1 2 3
data.frame()
# data.frame関数
# --- 全て表示されるので一部のみ表示
Y <- data.frame(x = 1:3, y = 3:1) %T>% print()
## x y
## 1 1 3
## 2 2 2
## 3 3 1
# 複数列の場合はデータフレームと判断
Y[, 1:2] %>% class()
## [1] "data.frame"
# 単独列だとベクトルと判断してデータ型を返す
Y[, 1] %>% class()
## [1] "integer"
# 実際にベクトルとして出力
Y[, 1]
## [1] 1 2 3
as.tibble()
はas.data.frame()
よりもかなり速いas.data.frame()
は実際にボトルネックになることが多いようだ# 準備:計測用オブジェクト
X <- replicate(26, sample(100), simplify = FALSE)
names(X) <- letters
X %>% list.tree()
## . = list 26 (13296 bytes)
## . a = integer 100= 33 14 85 50 71 82 ...
## . b = integer 100= 63 17 42 53 15 51 ...
## . c = integer 100= 73 83 19 44 86 65 ...
## . d = integer 100= 19 38 53 27 47 91 ...
## . e = integer 100= 26 72 50 59 34 55 ...
## . f = integer 100= 92 65 39 59 35 10 ...
## . g = integer 100= 36 11 81 34 100 ...
## . h = integer 100= 65 58 27 74 76 67 ...
## . i = integer 100= 52 91 74 78 68 16 ...
## . j = integer 100= 4 90 44 38 18 9 ...
## . k = integer 100= 75 79 33 76 12 38 ...
## . l = integer 100= 16 12 9 85 61 44 ...
## . ... and 14 more
# 速度検証
microbenchmark::microbenchmark(
as_tibble(X),
as.data.frame(X)
)
## Unit: microseconds
## expr min lq mean median uq max
## as_tibble(X) 328.425 346.153 421.5816 377.876 432.9235 2006.002
## as.data.frame(X) 1805.402 1860.294 1987.6496 1933.226 2098.3715 2545.912
## neval cld
## 100 a
## 100 b
data_frame()
でも同様の操作を行うことができるtibble_
の場合はリストで指定する# データフレームの作成
# --- tibble関数
tibble(x = 1:5, y = x * 2)
## # A tibble: 5 × 2
## x y
## <int> <dbl>
## 1 1 2
## 2 2 4
## 3 3 6
## 4 4 8
## 5 5 10
# データフレームの作成
# --- data_frame関数
data_frame(x = 1:5, y = x * 2)
## # A tibble: 5 × 2
## x y
## <int> <dbl>
## 1 1 2
## 2 2 4
## 3 3 6
## 4 4 8
## 5 5 10
# リストの作成
tibble_(list(x = ~1:5, y = ~x * 2))
## # A tibble: 5 × 2
## x y
## <int> <dbl>
## 1 1 2
## 2 2 4
## 3 3 6
## 4 4 8
## 5 5 10
as_tibble
とas_data_frame
は同様の動作# 準備:リストの作成
iris %>% class()
## [1] "data.frame"
# 方法1:リストをデータフレームに変換
iris %>% as_tibble() %>% class()
## [1] "tbl_df" "tbl" "data.frame"
# 方法2:リストをデータフレームに変換
iris %>% as_data_frame() %>% class()
## [1] "tbl_df" "tbl" "data.frame"
# 参考:データセットの確認
iris %>% as_tibble()
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fctr>
## 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
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ... with 140 more rows
is.tibble()
という関数もある(動作は一緒)# 準備:データフレームを2形式で作成
X1 <- iris
X2 <- iris %>% as_tibble()
# data.frameクラスなのでFALSE
X1 %>% is.tibble()
## [1] FALSE
# tibbleクラスなのでTRUE
X2 %>% is.tibble()
## [1] TRUE
X2 %>% is_tibble()
## [1] TRUE
~(チルダ)
を付けるtribble(
~colA, ~colB,
"a", 1,
"b", 2,
"c", 3
)
## # A tibble: 3 × 2
## colA colB
## <chr> <dbl>
## 1 a 1
## 2 b 2
## 3 c 3
アトミックベクトル
をデータフレーム形式に変換する
名前
と要素
の2列で構成リスト
をデータフレーム形式に変換する
リスト要素の名前
とネストされた要素
の2列で構成# ベクトルを変換
c(a = 5, b = 7) %>% enframe()
## # A tibble: 2 × 2
## name value
## <chr> <dbl>
## 1 a 5
## 2 b 7
# リストを変換
list(A = 1:5, B = 6:10) %>% enframe()
## # A tibble: 2 × 2
## name value
## <chr> <list>
## 1 A <int [5]>
## 2 B <int [5]>
.before引数
や.after引数
でどこにでも追加可能# 準備:データフレームの作成
df <- tibble(x = 1:3, y = 3:1) %T>% print()
## # A tibble: 3 × 2
## x y
## <int> <int>
## 1 1 3
## 2 2 2
## 3 3 1
# 列の追加
# --- 初期状態では最後尾に追加
df %>% add_column(z = -1:1, w = 0)
## # A tibble: 3 × 4
## x y z w
## <int> <int> <int> <dbl>
## 1 1 3 -1 0
## 2 2 2 0 0
## 3 3 1 1 0
# 列の追加
# --- 最前列の前に追加
df %>% add_column(z = -1:1, w = 0, .before = "x")
## # A tibble: 3 × 4
## z w x y
## <int> <dbl> <int> <int>
## 1 -1 0 1 3
## 2 0 0 2 2
## 3 1 0 3 1
# 準備:データフレームの作成
df <- tibble(x = 1:3, y = 3:1) %T>% print()
## # A tibble: 3 × 2
## x y
## <int> <int>
## 1 1 3
## 2 2 2
## 3 3 1
# 行を追加
df %>% add_row(x = 4, y = 0)
## # A tibble: 4 × 2
## x y
## <dbl> <dbl>
## 1 1 3
## 2 2 2
## 3 3 1
## 4 4 0
# 準備:データセットが行名を持つことを確認
mtcars %>% attributes()
## $names
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
##
## $row.names
## [1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
## [4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
## [7] "Duster 360" "Merc 240D" "Merc 230"
## [10] "Merc 280" "Merc 280C" "Merc 450SE"
## [13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
## [16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
## [19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
## [22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
## [25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
## [28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
## [31] "Maserati Bora" "Volvo 142E"
##
## $class
## [1] "data.frame"
# 行名を持つかどうかを判定
mtcars %>% has_rownames()
## [1] TRUE
# 準備:データセットが行名を持つことを確認
mtcars %>% attributes()
## $names
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
##
## $row.names
## [1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
## [4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
## [7] "Duster 360" "Merc 240D" "Merc 230"
## [10] "Merc 280" "Merc 280C" "Merc 450SE"
## [13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
## [16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
## [19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
## [22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
## [25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
## [28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
## [31] "Maserati Bora" "Volvo 142E"
##
## $class
## [1] "data.frame"
# 行名を持つかどうかを判定
mtcars %>% remove_rownames() %>% attributes()
## $names
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
##
## $row.names
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## [24] 24 25 26 27 28 29 30 31 32
##
## $class
## [1] "data.frame"
# 準備:データセットが行名を持つことを確認
mtcars %>% names()
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
# データセットに行名を追加
X <- mtcars %>% rownames_to_column() %T>% names()
# 参考:データセットの確認
X %>% as_tibble()
## # A tibble: 32 × 12
## rowname mpg cyl disp hp drat wt qsec vs am
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1
## 2 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1
## 3 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1
## 4 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0
## 5 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0
## 6 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0
## 7 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0
## 8 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0
## 9 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0
## 10 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0
## # ... with 22 more rows, and 2 more variables: gear <dbl>, carb <dbl>
rowname
という名前の列を行名として格納する
as.data.frame()
を事前に行う事で解消# 準備:行名用のフィールドを作成
# --- 行名を`rowname`とする点に注意
X <- iris %>%
group_by(Species) %>%
do(head(., 3)) %>%
ungroup() %>%
mutate(rowname = paste0(Species, row_number())) %>%
select(rowname, everything()) %>%
as_tibble() %T>%
print()
## # A tibble: 9 × 6
## rowname Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <chr> <dbl> <dbl> <dbl> <dbl> <fctr>
## 1 setosa1 5.1 3.5 1.4 0.2 setosa
## 2 setosa2 4.9 3.0 1.4 0.2 setosa
## 3 setosa3 4.7 3.2 1.3 0.2 setosa
## 4 versicolor4 7.0 3.2 4.7 1.4 versicolor
## 5 versicolor5 6.4 3.2 4.5 1.5 versicolor
## 6 versicolor6 6.9 3.1 4.9 1.5 versicolor
## 7 virginica7 6.3 3.3 6.0 2.5 virginica
## 8 virginica8 5.8 2.7 5.1 1.9 virginica
## 9 virginica9 7.1 3.0 5.9 2.1 virginica
# rowname列を列名として格納する
XX <- X %>%
as.data.frame() %>%
column_to_rownames() %T>%
print()
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## setosa1 5.1 3.5 1.4 0.2 setosa
## setosa2 4.9 3.0 1.4 0.2 setosa
## setosa3 4.7 3.2 1.3 0.2 setosa
## versicolor4 7.0 3.2 4.7 1.4 versicolor
## versicolor5 6.4 3.2 4.5 1.5 versicolor
## versicolor6 6.9 3.1 4.9 1.5 versicolor
## virginica7 6.3 3.3 6.0 2.5 virginica
## virginica8 5.8 2.7 5.1 1.9 virginica
## virginica9 7.1 3.0 5.9 2.1 virginica
# 属性を確認
XX %>% attributes()
## $names
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## [5] "Species"
##
## $row.names
## [1] "setosa1" "setosa2" "setosa3" "versicolor4" "versicolor5"
## [6] "versicolor6" "virginica7" "virginica8" "virginica9"
##
## $class
## [1] "data.frame"
as.data.frame()
を事前に行う事で解消# 準備:ユニークな行名を作成
X <- iris %>%
group_by(Species) %>%
do(head(., 3)) %>%
ungroup() %>%
mutate(rowname = paste0(Species, row_number())) %>%
select(rowname, everything()) %>%
as_tibble() %T>%
print()
## # A tibble: 9 × 6
## rowname Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <chr> <dbl> <dbl> <dbl> <dbl> <fctr>
## 1 setosa1 5.1 3.5 1.4 0.2 setosa
## 2 setosa2 4.9 3.0 1.4 0.2 setosa
## 3 setosa3 4.7 3.2 1.3 0.2 setosa
## 4 versicolor4 7.0 3.2 4.7 1.4 versicolor
## 5 versicolor5 6.4 3.2 4.5 1.5 versicolor
## 6 versicolor6 6.9 3.1 4.9 1.5 versicolor
## 7 virginica7 6.3 3.3 6.0 2.5 virginica
## 8 virginica8 5.8 2.7 5.1 1.9 virginica
## 9 virginica9 7.1 3.0 5.9 2.1 virginica
# rowname列を列名として格納する
XX <- X %>%
as.data.frame() %>%
set_rownames(c(.$rowname)) %T>%
as_tibble() %>%
print()
## rowname Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa1 setosa1 5.1 3.5 1.4 0.2
## setosa2 setosa2 4.9 3.0 1.4 0.2
## setosa3 setosa3 4.7 3.2 1.3 0.2
## versicolor4 versicolor4 7.0 3.2 4.7 1.4
## versicolor5 versicolor5 6.4 3.2 4.5 1.5
## versicolor6 versicolor6 6.9 3.1 4.9 1.5
## virginica7 virginica7 6.3 3.3 6.0 2.5
## virginica8 virginica8 5.8 2.7 5.1 1.9
## virginica9 virginica9 7.1 3.0 5.9 2.1
## Species
## setosa1 setosa
## setosa2 setosa
## setosa3 setosa
## versicolor4 versicolor
## versicolor5 versicolor
## versicolor6 versicolor
## virginica7 virginica
## virginica8 virginica
## virginica9 virginica
# 属性を確認
XX %>% attributes()
## $class
## [1] "data.frame"
##
## $row.names
## [1] "setosa1" "setosa2" "setosa3" "versicolor4" "versicolor5"
## [6] "versicolor6" "virginica7" "virginica8" "virginica9"
##
## $names
## [1] "rowname" "Sepal.Length" "Sepal.Width" "Petal.Length"
## [5] "Petal.Width" "Species"
# 列名が存在するかを判定
iris %>% has_name("Species")
## [1] TRUE
# ベクトルの場合
1:5 %>% print()
## [1] 1 2 3 4 5
1:5 %>% repair_names()
## V1 V2 V3 V4 V5
## 1 2 3 4 5
# リストの場合
list(1:5, 6:10)
## [[1]]
## [1] 1 2 3 4 5
##
## [[2]]
## [1] 6 7 8 9 10
list(1:5, 6:10) %>% repair_names()
## $V1
## [1] 1 2 3 4 5
##
## $V2
## [1] 6 7 8 9 10
# データフレームの場合
tibble(1:5, 6:10)
## # A tibble: 5 × 2
## `1:5` `6:10`
## <int> <int>
## 1 1 6
## 2 2 7
## 3 3 8
## 4 4 9
## 5 5 10
tibble(1:5, 6:10) %>% repair_names()
## # A tibble: 5 × 2
## `1:5` `6:10`
## <int> <int>
## 1 1 6
## 2 2 7
## 3 3 8
## 4 4 9
## 5 5 10
# 列名を変更する
iris %>%
as_tibble() %>%
set_colnames(c("Sepal.Length_1", "Sepal.Width_1",
"Petal.Length_1", "Petal.Width_1", "Species_1"))
## # A tibble: 150 × 5
## Sepal.Length_1 Sepal.Width_1 Petal.Length_1 Petal.Width_1 Species_1
## <dbl> <dbl> <dbl> <dbl> <fctr>
## 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
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ... with 140 more rows
str()
よりも見やすく表示する# 準備:irisをtibbleクラスに変換
X <- iris %>% as_tibble() %T>% print()
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fctr>
## 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
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ... with 140 more rows
# データ構造の確認
X %>% glimpse()
## Observations: 150
## Variables: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9,...
## $ Sepal.Width <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1,...
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5,...
## $ Petal.Width <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1,...
## $ Species <fctr> setosa, setosa, setosa, setosa, setosa, setosa, ...
# 参考:str関数による表示
X %>% str()
## Classes 'tbl_df', 'tbl' and 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
mtcars %>% trunc_mat()
data.frame [32 × 11]
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
---|---|---|---|---|---|---|---|---|---|---|
21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 | 0 | 4 | 2 |
22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 | 0 | 4 | 2 |
19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |
(with 22 more rows)