14  型の基本(L18)

hako1からhako5まで5つの変数を作成します。

hako1 <- 3
hako2 <- 4
hako3 <- 5
hako4 <- 6
hako5 <- 7

5つの変数をつくってみました。 変数同士で計算することができるので、全部の箱の値を足して、新しい変数にその結果を代入したい場合は、次のように書きます。

hako_dai <- hako1 + hako2 + hako3 + hako4 + hako5 hako_dai


できましたか?

::: {.cell}

```{.r .cell-code}
rm(list=ls())

:::

今度は文字列をいれてみましょう

hako1 <- "hello"
hako2 <- "world"

文字列が入った箱同士を足すことが可能でしょうか?

hako1 + hako2
Error in hako1 + hako2: non-numeric argument to binary operator

はい、だめですね。数値でないと怒られました。

文字列型はそのままでは計算できません。なので、例え、数字っぽく見えようと、計算できません。

hako <- "5"

hako + hako 
Error in hako + hako: non-numeric argument to binary operator

これもだめです。

変数の中身が、「数字のつもり」なのに、「文字列型になってしまっている」ケースが今後、実際に分析を行う中で多々発生します。

そういうケースでは型を変換する関数を利用します。

今回の場合は、文字列型を数字型に変換したいので、

as.numeric("5")
[1] 5

こんな風に、as.numeric関数を利用しましょう。

文字列が数字と解釈できる場合は、数字に変換してくれます。

ただし、人間が見たら明らかに数字と思われるものでも、as.numericは柔軟に対応することはできません。

as.numeric(“5.12”) as.numeric(“5000”) as.numeric(“5,000”) as.numeric(“1/2”)


5,000は余分なカンマが入っているのでダメですし、
1/2は0.5と人ならわかりますがコンピューターにとっては1スラッシュ2という文字列なので数字への変換はできません。


変換できない場合は、NA(Not Available、欠損値)へと変換されます。

後は、数字を文字列型に変換する場合に使う関数は、

as.character(1000)

as.character関数です。

以上、Rの基本としての変数と型変換の話でした。