138  解説 list

library(tidyverse)

それではreplace_naの動作を確認していきましょう。ただ、そのまえに、Listについて少しだけ説明させてください。

ベクトルは、このように名前をつけて実行すると

vec1 <- c(name1 = 1, name2 = 2, name3 = 3)
vec1
name1 name2 name3 
    1     2     3 

こうなりましたね?

繰り返しになりますが、

vec2 <- c(name1 = 1, name2 = "2", name3 = 3)
vec2
name1 name2 name3 
  "1"   "2"   "3" 

全て同じ型でないと自動的に文字型に置き換わります

ここで、cの代わりにListを用いてみます。

l1 <- list(name1 = 1, name2 = "2", name3 = 3)

l1
$name1
[1] 1

$name2
[1] "2"

$name3
[1] 3

cと形が少し違いますがデータが入力した形で保存されています

このlistで保存された値は、

l1[[1]]
[1] 1
l1[[2]]
[1] "2"
l1[[3]]
[1] 3
l1$name1
[1] 1
l1$name2
[1] "2"
l1$name3
[1] 3

[[]]か$でとりだすことができます。

ここで注目していただきたいのが、

l1$name1
[1] 1
l1$name2
[1] "2"
l1$name3
[1] 3

がそれぞれ、型が違うというところです。

ベクトルが「同じ要素」の集合を作るものであれば、リストは、「オブジェクト」の集合を作るもの

となっており、Rのオブジェクトであれば何でも保存できます。

例えば、

char <- "これは文字列型の要素です"
vect <- c(1:10)
dat <- iris %>% head()
gg <- ggplot(dat) + geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Species))

list_test <- list(
  single_character = char,
  a_vector = vect,
  data_frame = dat,
  even_plot = gg
)

としてあげると、

list_test
$single_character
[1] "これは文字列型の要素です"

$a_vector
 [1]  1  2  3  4  5  6  7  8  9 10

$data_frame
  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
6          5.4         3.9          1.7         0.4  setosa

$even_plot

list_test$data_frame
  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
6          5.4         3.9          1.7         0.4  setosa
list_test$even_plot

こんな感じでこれまで学んだRのありとあらゆるオブジェクトを保存することが可能です。

今回のreplace_na関数では、複数の列に対して置き換える要素の型が常に一緒とは限らないため、複数の要素を利用できるlistを用いて記載する形となっています。

それでは、次の動画では、実際にこのlistを利用した、置き換えの指定方法を確認していきましょう。