English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R データ型

データ型とは、異なるデータ型の変数や関数を宣言するための広範なシステムです。

変数の型は、変数が占める空間と、保存されるビットパターンをどのように解釈するかを決定します。

R言語の最も基本的なデータ型には主に以下の三種類があります:

  • 数字

  • 論理

  • テキスト

数字定数には主に以下の二種類があります:

一般的な型123    -0.125
科学記数法1.23e2    -1.25E-1

論理型は他の多くのプログラミング言語でボルン型(Boolean)と呼ばれますが、定数の値はただ TRUE そして FALSE

ベクトルの各要素はインデックスを使用して個別に取得できます:R言語では大文字と小文字を区別し、trueやTrueはTRUEを代表しません。

最も直感的なデータ型はテキスト型です。テキストは他の言語でよく見られる文字列(String)であり、定数はダブルクォートで囲まれます。R言語では、テキスト定数はシングルクォートで囲まれたり、ダブルクォートで囲まれたりします。例えば:

> 'w'3codebox' == "w"3codebox"
[1] TRUE

R言語の変数の定義は、強いタイプの言語の文法規則とは異なり、変数に名前とデータ型を設定する必要はありません。Rで代入演算子を使用するたびに、新しい変数が定義されています:

a = 1
b <- TRUE
b = "abc"

オブジェクトの種類ごとに以下の通りです: 6 の種類(後で詳しく説明します):

ベクトル

ベクトル(Vector)は、Java、Rust、C#などの専門プログラミング言語の標準ライブラリでは提供されています。これは、ベクトルが数学的演算で不可欠なツールであるためです。最も一般的なベクトルは二次元ベクトルであり、平面座標系で必ず使用されます。

ベクトルはデータ構造上、一つの線形リストとして見ることができ、配列として見ることができます。

R言語では、ベクトルが一つのデータ型として存在することで、ベクトルの操作が簡単になります:

> a = c(3, 4)
> b = c(5, 0)
> a + a
[1] 8 4
>

c() はベクトルを作成する関数です。

ここでは、二つの二次元ベクトルを足し算を行い、新しい二次元ベクトル8, 4二つの二次元ベクトルを演算すると数学的な意味を失うため、動作は停止しませんが、警告が出されます。

我建议大家从习惯上杜绝这种情况的出现。

私はこのような状況が発生するのを習慣的に排除することをお勧めします。

> a = c(10, 20, 30, 40, 50)
Rはベクトルの一部を簡単に取得できます:2]
[1] 20

ベクトルの各要素はインデックスを使用して個別に取得できます:注意: 1 R言語の「インデックス」はオフセットを意味するのではなく、何番目かを意味し、以下から始まるという意味です:

最初の!

Rはベクトルの一部を簡単に取得できます:1:4> a[ 1 まで 4 NA # 取得第 1 と第 4 項
[1] 10 20 30 40
> a[c(1, 3, 5) # 取得第 1, 3, 5 項
[1] 10 30 50
> a[c(-1, -5NA # 削除第 1 と第 5 項
[1] 20 30 40

これらの部分取得方法は最も一般的です。

ベクトルはスカラー計算をサポートします:

> c(1.1, 1.2, 1.3) - 0.5
[1NA6 0.7 0.8
> a = c(1,2)
> a ^ 2
[1] 1 4

以前に説明した一般的な数学演算関数、例えばsqrt、expなどもベクトルに対するスカラー演算に使用できます。

「ベクトル」は線形リスト構造であり、一般的な線形リスト処理関数を持ちます。Rはこれらの関数を実際に持っています:

ベクトルのソート:

> a = c(1, 3, 5, 2, 4, 6)
> sort(a)
[1] 1 2 3 4 5 6
> rev(a)
[1] 6 4 2 5 3 1
> order(a)
[1] 1 4 2 5 3 6
> a[order(a)]
[1] 1 2 3 4 5 6

order()関数は、ベクトルがソートされた後のインデックスベクトルを返します。

ベクトル統計

Rには非常に完全な統計学関数があります:

関数名意味
sum合計
mean平均値を求める
var分散
sd標準偏差
min最小値
max最大値
range取値範囲(二つの次元のベクトル、最大値と最小値)

ベクトル統計の例:

> sum(1:5)
[1] 15
> sd(1:5)
[1] 1.581139
> range(1:5)
[1] 1 5

を使用します。

ベクトル生成 ベクトルの生成には、 c()

間隔のある等差数列を生成する場合は、seq関数を使用して生成することもできますし、min:max演算子を使用して連続したシーケンスを生成することもできます。 関数:

> seq(1, 9, 2)
[1] 1 3 5 7 9

seqはまた、mからnまでの等差数列を生成できます。m、nおよび数列の長さを指定するだけで良いです:

> seq(0, 1, length.out=3)
[1NA 0.5 1.0

repはrepeat(繰り返し)を意味し、繰り返し出現する数字のシーケンスを作成することができます:

> rep(0, 5)
[1NA NA NA NA NA

ベクトルではよくNAとNULLを使用します。ここでこれらの単語とその違いについて説明します:

  • NAは「欠損」を意味し、NULLは「存在しない」を意味します。

  • NAは欠損と同じで、ここには値がありませんが、位置は存在します。

  • NULLはデータが存在しないことを意味します。

例示説明:

> length(c(NA, NA, NULL))
[1] 2
> c(NA, NA, NULL, NA)
[1NA NA NA

明らかに、NULLはベクトルには何の意味も持っていません。

論理型

論理ベクトルは主にベクトルの論理演算に使用され、例えば:

> c(1, 2, 3) > 2
[1] FALSE FALSE  TRUE

which 関数は非常に一般的な論理ベクトル処理関数であり、必要なデータのインデックスをフィルタリングするために使用できます:

> a = c(1, 2, 3)
> b = a > 2
> print(b)
[1] FALSE FALSE  TRUE
> which(b)
[1] 3

例えば、線形リストから大于等于 60 で小于 70 のデータ:

10, 40, 78, 64, 53, 62, 69, 70)
> print(vector[which(vector >= 60 & vector < 70)])
[1] 64 62 69

同様の関数には all と any があります:

> all(c(TRUE, TRUE, TRUE))
[1] TRUE
> all(c(TRUE, TRUE, FALSE))
[1] FALSE
> any(c(TRUE, FALSE, FALSE))
[1] TRUE
> any(c(FALSE, FALSE, FALSE))
[1] FALSE

all() は論理ベクトルが全て TRUE かどうかを確認し、any() は論理ベクトルに TRUE が含まれているかどうかを確認します。

文字

文字データの型自体は複雑ではありません。ここでは、文字の操作関数について紹介します:

> toupper("w3codebox") # 大文字に変換
[1] "w3codebox"
> tolower("w3codebox") # 小文字に変換
[1] "w3codebox"
> nchar("中文", type="bytes") # バイト長度を計算
[1] 4
> nchar("中文", type="char") # 文字数を計算
[1] 2
> substr("123456789", 1, 5) # 文字列を切り取る,から 1 まで 5
[1] "12345"
> substring("1234567890", 5) # 文字列を切り取る,から 5 から終わりまで
[1] "567890"
> as.numeric("12") # 文字列を数字に変換する
[1] 12
> as.character(12.34) # 数字を文字列に変換する
[1] "12.34"
> strsplit("2019;10;1", ";") # 文字列を区切る
[[1]]
[1] "2019" "10"   "1"
> gsub("/", "-", "2019/10/1") # 文字列を置き換える
[1] "2019-10-1"

Windows コンピュータ上で実装されており、GBK エンコード標準を使用しているため、1つの漢字文字は2バイトです。UTF-8 エンコードされたコンピュータ上で実行され、単一の漢字文字のバイト長度は 3。

R が perl 言語形式の正規表現をサポートしています:

> gsub("[[:alpha:]]+", "$", "Two words")
[1] "$ $"

更多文字列内容を参照してください:R言語文字列紹介

マトリックス

R言語は線形代数の研究にマトリックスデータ構造を提供しており、他の言語の2次元配列に似ていますが、Rは言語レベルのマトリックス演算をサポートしています。

まず、マトリックスの生成を見てみましょう:

> vector=c(1, 2, 3, 4, 5, 6)
ベクターの値は一列一列にマトリックスに詰め込まれます。行に詰め込む場合は、byrow属性を指定する必要があります: 2, 3)
     [1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

マトリックスの初期化内容はベクターで渡されます。次に、マトリックスが何行、何列であるかを表現します。

> vector=c(

ベクターの値は一列一列にマトリックスに詰め込まれます。行に詰め込む場合は、byrow属性を指定する必要があります: 2, 3= matrix(vector
     [1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

> matrix(vector

> m1 マトリックスの各値は直接アクセスできます: 2, 3= matrix(vector
> m1[1,1, byrow=TRUE) 1 ] # 第 1 行 第 
[1] 1
> m1[1,3, byrow=TRUE) 1 ] # 第 3 行 第
[1] 3

Rのマトリックスの各列と各行には名前を設定することができます。このプロセスは文字ベクトルのバッチ処理で完了されます:1> colnames(m
) = c("x", "y", "z")1> rownames(m
> m1
  ["a", ]
) = c("a", "b") 1 2 3
a 4 5 6
> m1b
["a", ] 
1 2 3

x y z

マトリックスの四則演算は、ベクターと基本的に一致しており、スカラーと演算を行うことができます。また、同じサイズのマトリックスと対応する位置での演算もできます。

> m1 = matrix(c(1, 2), 1, 2)
> m2 = matrix(c(3, 4), 2, 1)
> m1 %*% m2
     [1]
[1,]   11

逆マトリックス:

> A = matrix(c(1, 3, 2, 4), 2, 2)
> solve(A)
     [1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5

apply()関数は、マトリックスの各行または各列をベクトルとして操作することができます:

> (A = matrix(c(1, 3, 2, 4), 2, 2))
     [1] [,2]
[1,]    1    2
[2,]    3    4
> apply(A, 1, sum) # 第二个参数为 1 行操作,sum()関数を使用して
[1] 3 7
> apply(A, 2, sum) # 第二个参数为 2 列操作
[1] 4 6

更多マトリックス内容を参照してください:R マトリックス