« 2021年1月 | トップページ | 2021年3月 »

2021年2月20日 (土)

[R]保存されているオブジェクトを確認する

ls関数あるいはobjects関数は、記録されているオブジェクト(ベクトル、データフレーム、リスト、関数など)の一覧表示をすることができる。

Rの起動直後には、何も記録されていない。

> ls()
character(0)

試しに、ベクトルと関数を作って再度実行してみる。

> n <- 1:3
> f <- function(x) x ^ 2
> ls()
[1] "f" "n"

ls関数もobjects関数も、デフォルトでは名前が「.」(ピリオド)で始まるオブジェクトは表示しない。例えば、set.seed関数を実行すると.Random.seedというベクトルを作成する。このようなオブジェクトも表示するには、all.namesオプションにTRUEを指定する。

> ls(all.names = TRUE)
[1] "f" "n"
> set.seed(0)
> ls()
[1] "f" "n"
> ls(all.names = TRUE)
[1] ".Random.seed" "f" "n"

2021年2月11日 (木)

[R]関数の最小値(最大値)を検索する

optimize関数を使う。以下は関数 f(x) = (x-2)^2 - 10 の最小値を検索した例。xの最小値は式と下図より10であり、その時の説明変数 x=2 である。戻り値はリストで、objectiveに最小値が、その時の説明変数の値がminimumに格納されている。

Figure1_20210211105601

> f <- function(x) return((x - 2) ^ 2 + 10)
> plot(-5:5, f(-5:5), type = "o")
> optimize(f, c(-5, 5))
$minimum
[1] 2
$objective
[1] 10

以下は関数 f(x) = -(x-2)^2 - 10 の最大値を検索した例。xの最大値は式と下図より20であり、その時の説明変数 x=2 である。最大値を検索する場合はmaximumオプションをTRUEにする。

Figure2

> f <- function(x) return(-(x - 2) ^ 2 + 20)
> plot(-5:5, f(-5:5), type = "o")
> optimize(f, c(-5, 5), maximum = TRUE)
$maximum
[1] 2
$objective
[1] 20

少しふざけて、上図の範囲(x > -5、x < 5)で最小値を検索してみる。2番目の引数に説明変数の検索範囲をベクトル(最小値、最大値)で与える。図のとおりに、説明変数がおおよそ-5のときにおおよそ-29であると求まる(グラフの左端のこと)。

> optimize(f, c(-5, 5))
$minimum
[1] -4.999944
$objective
[1] -28.99922

optimize関数の3番目以降の引数には、その検索を行う関数の引数を指定することができる。以下の例では検索する関数 f(x, a) であり、最小値検索のための説明変数はその関数の1番目にして、2番目以降は任意の値を設定することができる。

> f <- function(x, a) return((x - a) ^ 2 + 10)
> optimize(f, c(-5, 5), a = 2)
$minimum
[1] 2
$objective
[1] 10
> optimize(f, c(-5, 5), a = 3)
$minimum
[1] 3
$objective
[1] 10

2021年2月 2日 (火)

[R]日付型ベクトルから指定の要素(年、月、日など)を抜き出す

format関数を使う。format関数は抜き出した結果を文字型ベクトルで返すため、用途に応じてas.XXX関数を使って変換する。以下は、それぞれ年、月、日を抜き出した例。最後は抜き出した日を整数に変換している。

> dt <- c(as.Date("2000-01-03"), as.Date("2000-02-01"))
> dt
[1] "2000-01-03" "2000-02-01"
> format(dt, "%Y")
[1] "2000" "2000"
> format(dt, "%m")
[1] "01" "02"
> format(dt, "%d")
[1] "03" "01"
> as.integer(format(dt, "%m"))
[1] 1 2

« 2021年1月 | トップページ | 2021年3月 »

無料ブログはココログ

■■

■■■