Skip to content

Instantly share code, notes, and snippets.

@kozo2
Created December 24, 2019 09:13
Show Gist options
  • Save kozo2/1511b363382df13c984d4a7257514945 to your computer and use it in GitHub Desktop.
Save kozo2/1511b363382df13c984d4a7257514945 to your computer and use it in GitHub Desktop.
---
title: "Exercise1: Rの基本操作"
output: html_notebook
---
このノートブックでは、Rの基本的な使い方について説明します
## データ型
---
あらゆるプログラミング言語において、データには型があります
例えば、Rのコンソール画面で1と打つと1と出力されますが
```{r}
1
```
isという関数を使うと、これは"numeric"という型を持ち、また長さ1のvector(後述)でもあることがわかります
```{r}
is(1)
```
整数ではなく、小数点以下の数字も含んだ値(不動小数点数)もnumericです
```{r}
is(2.1)
```
ただし1Lと打つと、これはinteger(整数)としての1を定義したことになります
```{r}
is(1L)
```
数値データは様々な計算ができます
```{r}
1 + 1 # 足し算
```
```{r}
3 - 1 # 引き算
```
```{r}
6 * 2 # 掛け算
```
```{r}
4 / 2 # 割り算
```
```{r}
2^5 # 2の5乗
```
```{r}
log10(5) # 5の常用対数値
```
ダブルクオーテーション"で文字列をくくると、これはcharacterというデータ型になります
```{r}
"SAKIGAKE"
```
```{r}
is("SAKIGAKE")
```
```{r}
is(1) # 1は数値
```
```{r}
is("1") # ""で囲むと文字列
```
numericとcharacter同士は計算することができません
ただし例外的に、paste関数では文字列も数値も扱えます
このようにデータの型の違いによって、関数の挙動が異なるので、注意が必要です
```{r}
try(1 + "1") # 数値と文字列を足すことはできない
```
```{r}
paste0("SAKIGAKE", "5") # 文字列同士を連結することはできる
```
```{r}
paste0("SAKIGAKE", 5) # paste0関数の仕様で、文字列と数値を連結することはできる
```
論理値TRUE/FALSEはlogicalというデータ型になります
```{r}
TRUE
```
```{r}
is(TRUE)
```
```{r}
FALSE
```
```{r}
is(FALSE)
```
数値や文字列が等しい(==)場合、TRUEを返します
```{r}
1 == 1 # これはTRUE(==は同じという意味)
```
逆に等しくない場合はFALSEを返します
```{r}
1 == 2 # これはFALSE
```
```{r}
"SAKIGAKE" == "SAKIGAKE" # これはTRUE
```
```{r}
"SAKIGAKE" == "CREST" # これはFALSE
```
!=(等しく無い)と書く事でTRUE/FALSEを反転させた結果を得ることができます
```{r}
"SAKIGAKE" != "CREST" # これはTRUE(!=は違うという意味)
```
最後に、factor(因子)というデータ型を説明します
これは、以下のように同じ値が複数回出てくるベクトル(後述)の表現としてよく使われます
```{r}
JST <- factor(c("SAKIGAKE", "SAKIGAKE",
"CREST", "CREST", "CREST",
"ACT-X", "ACT-X", "ACT-X"))
```
nlevels関数で、3種類の値が含まれていることがわかります
```{r}
nlevels(JST) # 3つある
```
その三種類の値は具体的に以下のようなものだとわかります
```{r}
levels(JST) # SAKIGAKE, CREST, ACT-Xがある
```
因子を使う上で注意する必要がある点は、as.numericで数値になってしまう点です
文字列が数値化された場合と異なり、ただの通し番号1,2,3...として数値化されるので注意したいです
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment