Rで使うデータ構造をまとめてみます。一気に眺めることで、それぞれの特徴を理解できるかもしれません。
とにかく早く問題解決したい人はこちら>>直接、データ解析相談
Rのデータ構造
ベクトル
ベクトルは、最も基本的な構造をしています。数値や文字などの1種類のデータを順番に保持する1次元構造のデータです。
生成とアクセス
一番簡単な生成方法は、c結合関数
を使ってデータを列挙する方法です。データへのアクセスは、インデックスを指定します。注意すべき点は、他の言語のように、インデックスが0から始まらず、先頭をインデックス番号1としてアクセスするという点です。
ベクトルの生成
R > my_data <- c(1, 2, 3)
R > my_data
[1] 1 2 3
ベクトルへのアクセス
R > my_data[1]
[1] 1
R > my_data[2]
[1] 2
リスト
リストは、各項目にたいして名前をつけたベクトルです。数値や文字などを混ぜてデータを管理できます(リスト内にリストを作ることもできます)。
生成とアクセス
リストの生成は、list関数
を使ってデータを列挙します。データへのアクセスは、名前やインデックスを使ってアクセスできます。
リストの生成
R > my_data <- list(name="kumazou", age=100, animal=TRUE)
R > my_data
$name
[1] "kumazou"
$age
[1] 100
$animal
[1] TRUE
リストへのアクセス
R > my_data[1] # インデックス
$name
[1] "kumazou"
R > my_data$name # 名前
[1] "kumazou"
R > my_data[["name"]] # 名前
[1] "kumazou"
行列
行列は、数値や文字などの1種類のデータを2次元配列として保持するデータ構造です。
生成とアクセス
行列の生成は、matrix関数
を使います。データへのアクセスは、行と列のインデックスや名前を使ってアクセスできます。
行列の生成
R > my_data <- matrix(sample(12), 3, 4) # 3行4列
R > my_data
[,1] [,2] [,3] [,4]
[1,] 5 12 8 10
[2,] 9 1 7 11
[3,] 4 3 6 2
R > dimnames(my_data) <- list(c('a', 'b', 'c'), # 行名
c('d', 'e', 'f', 'g')) # 列名
R > my_data
d e f g
a 5 12 8 10
b 9 1 7 11
c 4 3 6 2
行列へのアクセス
R > my_data[10] # 列方向に数えていって10番目
[1] 10
R > my_data[1, 4] # 行・列を指定
[1] 10
R > my_data['a', 'g'] # 行・列を指定(名前)
[1] 10
配列
配列は、行列と同様の多次元のベクトルで、2次元以上に拡張されたデータ構造です。
生成とアクセス
配列の生成は、array関数
を使います。データへのアクセスは、行列同様、行と列・次元のインデックスや名前を使ってアクセスできます。
行列の生成・アクセス
R > my_data <- array(1:24, c(2, 3, 4))
R > my_data
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
R > my_data[2, 2, 2]
[1] 10
データフレーム
データフレームは、「名前付けされたベクトルの列」を並べたリストです。外部ファイルを読み込んだ場合、データフレーム形式として利用することが多く、統計やバイオインフォマティクス解析処理でもっとも利用されるデータ構造の1つです。
生成とアクセス
データフレームの生成は、data.frame関数
を使います。名前付けされたベクトルとして列毎にデータを列挙し、並べます。データへのアクセスは、行列同様、行と列のインデックスや名前を使ってアクセスできます。また、列毎のデータについては、$を使った名前で参照出来ます。
データフレームの生成
R > my_data <-
data.frame(name=I(c("kumazou1", "kumazou2", "kumazou3")),
age=c(101, 102, 103),
color=c("red", "green", "yellow"))
R > my_data
name age color
1 kumazou1 101 red
2 kumazou2 102 green
3 kumazou3 103 yellow
R > str(my_data)
'data.frame': 3 obs. of 3 variables:
$ name :Class 'AsIs' chr [1:3] "kumazou1" "kumazou2" ...
$ age : num 101 102 103
$ color: Factor w/ 3 levels "green","red",..: 2 1 3
データフレームへのアクセス
R > my_data[3, 2] # インデックス
[1] 103
R > my_data$name # $name
[1] "kumazou1" "kumazou2" "kumazou3"
R > my_data[["age"]] # リスト風アクセス
[1] 101 102 103
R > my_data$name[1] # 名前とインデックス
[1] "kumazou1"
ファクター
ファクターは、データのカテゴリを記述するためのラベルです。factor関数
で生成します。
R > my_factor <- factor(c("PTN-A", "PTN-B", "PTN-C"))
R > my_factor
[1] PTN-A PTN-B PTN-C
Levels: PTN-A PTN-B PTN-C
論文・データ解析の支援
個別に直接相談できるのが良いと、たくさんの方にご利用頂いています。
とにかく早く問題解決したい人はこちら>>直接、データ解析相談
とにかく早く問題解決したい人はこちら>>直接、論文相談
関連記事1

R 4.0 インストール ubuntu
Rのインストール手順について。最近よくつかう「tidyverse」も一緒にインストールします。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R 4.0 インストール手順事前設定$ sudo apt update -qq$ su...

R 使い方 debug(デバッグ)方法 スクリプトの書き方
スクリプトが思ったように動かない、そんなときはバグ(プログラムの間違い)があると言われます。スクリプトを書く場合、そのような間違いを書かないように注意することは当然ですが、完全に防ぐのは難しいことです。スクリプトが思うように動かない場合は、...

R 使い方 文字列処理(文字列検索・文字列置換)
統計ソフトRは、統計処理やグラフの描画でよく用いられます。しかし、色々なことに活用していると、「文字列処理ができると便利だな」と思うことがあります。統計ソフトRには、文字列処理のための便利な関数が準備されているので、代表的な関数についてまと...

R 使い方 while 繰り返し スクリプトの書き方
Rで「条件を満たす間ずっと繰り返し」を行う場合は、whileを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談while スクリプトの書き方while文は、条件式と一緒に書きます。条件を満たす間、一連の文やブロックをず...

R 使い方 for 繰り返し スクリプトの書き方
Rで単純な繰り返し制御を行う場合は、forを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談for スクリプトの書き方forは繰り返し制御の基本的な構造です。集合には、ベクターやデータフレームなどを使うことができます。...

R switch 使い方 スクリプトの書き方
R の switch文は、「複数の条件」とそれに「対応した処理」をまとめて記述できるので、if文よりも簡潔にかけます。R の switchの条件は、文字列で書かれたラベルで判断します。R の switch文の「書き方」と使い方を、サンプルを...

R 使い方 if 条件分岐 スクリプトの書き方
R の if文は、フロー制御で最も単純な条件分岐です。条件に「一致したかどうか」という判断で、次に実行するコマンドを変更したりするときに使います。Rのif文の「書き方」、ANDやORを使った複数条件の指定の仕方などを、サンプルを交えてまとめ...

R 使い方 関数 スクリプトの書き方
Rの使い方として、プログラムの基本構成となる関数の作り方について。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R 使い方 関数を利用したプログラムメッセージの表示や、メッセージの長さを取得する関数を作成します。関数は、「関数...

R 使い方 Hello World スクリプトの書き方
Rでプログラムを書きます。今回は、プログラムの基本「Hello World!」です。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Hello World プログラムHello Worldプログラムは、プログラムの勉強を開始する...

R 使い方 行列(マトリックス) スクリプトの書き方
Rのマトリックスは、他のプログラミング言語と同様、数値や文字などの1種類のデータを2次元配列として保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。マトリックスの使い方について。とにかく早く問題解決した...

R 使い方 リスト スクリプトの書き方
Rのリストは、他のプログラミング言語と同様、各項目にたいして名前をつけたベクトルです。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。リストの使い方について。とにかく早く問題解決したい人はこちら>>直接、データ解析相談関連記...

R 使い方 ベクトル スクリプトの書き方
Rのベクトルは、他のプログラミング言語と同様、数値や文字などの1種類のデータを順番に保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのベクトルの使い方について。とにかく早く問題解決したい人はこちら>...

R 使い方 データフレーム・ファクター スクリプトの書き方
Rのデータフレーム・ファクターは、他のプログラミング言語のデータ構造とは異なる独特な構造。でも、とてもよく使う構造で、必ず使いこなせるようになりましょう。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのデータフレームとフ...

R 使い方 データ 読込み テキスト,csv,エクセル,データベース スクリプトの書き方
「統計ソフト R」にデータを読み込むのは簡単です。タブ区切りのデータやエクセル・DBなどからデータを取り込むことができます。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Rにデータを読み込む「統計ソフト R」にデータを読み込む...
関連記事2

R plotのPDFやPNGへの保存 - PDFなら複数の画像保存も可能
Rのplot (グラフ) は、PDFやPNGファイルとして保存することができます。操作は、通常のグラフの描画と同じです。違うところは、前もって保存先のデバイスをオープンし、描画終了後に明示的にクローズするだけです。PDFなら1つのファイルに...

R 使い方 組込みデータセット iris データフレーム・ベクトル・リスト
Rのデータ型について学びます。使うデータは、組込みデータセットの「iris」です。irisの構造を眺めたり要約統計量を求めることで、データフレーム・ベクトル型・リスト型について簡単に学びます。とにかく早く問題解決したい人はこちら>>直接、デ...

ratio 1.5倍は、logFCで何?
bioinfomatics では、ratio や logFC を変動の閾値としてよく使います。ratio 2倍・4倍なら、対数表現も1・2と簡単にわかりますが、1.5倍などを閾値とした場合は、対数で何になるか覚えておくのは大変です。これらは...

R 知っていると便利!パッケージ読込みとヘルプ
Rのインストール済みのパッケージについて調べます。スクリプトがちゃんと動かないとき、「何がインストールされているか?」また、「何がインストールされていないか?」がヒントになるときがあります。とにかく早く問題解決したい人はこちら>>直接、デー...

R 関数 maxの位置・minの位置を求める
Rで、最大値や最小値を求めるのは簡単ですが、「最大値・最小値の位置は?」という問題を考えてみたいと思います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談最大値・最小値を求める最大値・最小値を求めるのは簡単です。最大値を求める...

R 使い方 集計に便利な関数 aggregate
データフレームを使って集計を行う場合に、使いやすい関数があります。aggregate関数です。データフレームの計算にはapply系の関数がよく使われますが、わかりづらいという方にはオススメの方法です。とにかく早く問題解決したい人はこちら>>...

R 使い方 データフレーム 累積和を求める
データフレームやmatrixで累積和を求める機会ありませんか?「前の行の値」に「現在の行の値」を繰り返し足していくことで求められますが、せっかく「R」を使っているのに、for文やインデックスを使って求めるのも残念な感じがします。そんなときは...

R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
R の subset関数は、データフレームやマトリックスから条件にマッチした部分集合を取り出します。条件指定の主なパラメータは、「subset」と「select」です。「subset」では行を抽出するための条件式、「select」では列を抽...