15章 関数
15.0 ライブラリの読み込み
library("tidyverse")
library("lubridate")
library("MASS")15.1 はじめに
15.2 いつ関数を書くべきか?
練習問題1 TRUEはなぜrescale01()のパラメタではないのか。xに欠損値があり、na.rm = FALSEだとどうなるか。
TRUEはなぜrescale01()のパラメタではないのか。xに欠損値があり、na.rm = FALSEだとどうなるか。rescale01 <- function(x) {
rng <- range(x, na.rm = TRUE, finite = TRUE)
(x - rng[1]) / (rng[2] - rng[1])
}rescale01 <- function(x, ...) {
rng <- range(x, ...)
(x - rng[1]) / (rng[2] - rng[1])
}
x <- c(1:10, NA)
rescale01(x, na.rm = TRUE, finite = TRUE)
[1] 0.0000000 0.1111111 0.2222222 0.3333333 0.4444444 0.5555556
[7] 0.6666667 0.7777778 0.8888889 1.0000000 NA
rescale01(x, na.rm = FALSE, finite = TRUE)
[1] 0.0000000 0.1111111 0.2222222 0.3333333 0.4444444 0.5555556
[7] 0.6666667 0.7777778 0.8888889 1.0000000 NA練習問題2 rescale01()の2つ目の引数によって、無限の値は変更されません。0は-Infにマッピングされ、1はInfにマップされるように書き直しなさい。
rescale01()の2つ目の引数によって、無限の値は変更されません。0は-Infにマッピングされ、1はInfにマップされるように書き直しなさい。練習問題3 次のコードを関数に変えてください。
練習問題4 数値ベクトルの分散と歪度を計算するための独自の関数を作成しなさい。
練習問題5 同じ長さの2つのベクトルを取り、両ベクトルのNAが一致する組み合わせの合計を返す関数both_na()を書きなさい。
NAが一致する組み合わせの合計を返す関数both_na()を書きなさい。練習問題6 次の関数は何をするのですか?
練習問題7 Little Bunny Foo Foo、この曲にはたくさんの重複があるので、関数を使用して重複を減らしなさい。
15.3 関数は人間とコンピュータのためのもの
練習問題1 次の3つの関数を読んで、何をするのか調べなさい。また、良い名前をブレインストーミングしなさい。
練習問題2 あなたが最近書いた関数を取り、5分かけてより良い名前と内容をブレインストーミングします。
練習問題3 rnorm()とMASS::mvrnorm()を比較してください。それらをより一貫性のあるものにすることができるか?
rnorm()とMASS::mvrnorm()を比較してください。それらをより一貫性のあるものにすることができるか?練習問題4 rnorm(), dnorm()よりもnorm_r(), norm_d()が良いのはなぜか。単体のケースも作りなさい。
rnorm(), dnorm()よりもnorm_r(), norm_d()が良いのはなぜか。単体のケースも作りなさい。15.4 条件付きの実行
練習問題1 ifとはifelse()の違いは何か。
ifとはifelse()の違いは何か。練習問題2 時間に応じて、「おはよう」、「こんにちは」、または「こんばんは」と言う挨拶関数を作成しなさい。
練習問題3 fizzbuzz()関数を実装しなさい。入力は単一のスカラを想定。
fizzbuzz()関数を実装しなさい。入力は単一のスカラを想定。練習問題4 このネストされたif-elseステートメントのセットを単純化するために、cut()はどのように使用できるか?
cut()はどのように使用できるか?練習問題5 switch()で数値を使用するとどうなるのか?
switch()で数値を使用するとどうなるのか?練習問題6 このswitch()の呼び出しは何をするのか?
switch()の呼び出しは何をするのか?15.5 関数の引数
練習問題1 commas(letters, collapse = "-")はどのように機能しますか。
commas(letters, collapse = "-")はどのように機能しますか。練習問題2 rule("Title", pad = "-+")は、なぜ現在動作しないのか?pad引数で調整しなさい。
rule("Title", pad = "-+")は、なぜ現在動作しないのか?pad引数で調整しなさい。練習問題3 mean()のtrimは何をするか?いつ使用するか。
mean()のtrimは何をするか?いつ使用するか。練習問題4 cor()のmethodはc("pearson", "kendall", "spearman")です。どういう意味なのか?デフォルトでどの値が使われるのか?
cor()のmethodはc("pearson", "kendall", "spearman")です。どういう意味なのか?デフォルトでどの値が使われるのか?15.6 戻り値
15.7 環境
最終更新