Rでデータを解析していると頻繁に使用するベクトル。でも、意外とベクトルに関するコマンドを知らなかったりしませんか。日常的に使うかもしれない、ベクトルの「作成と操作」のコマンドを紹介します。
コマンドは実行コマンドはwindows 11のR version 4.1.2で確認しています。
実行コマンドの紹介
詳細はコメントを確認してください。なお、データ例の内容はsample関数で作成していますので実行のたびに内容が異なります。
<ベクトルの作成コマンド>
#数値のベクトル:0が指定した数のベクトル
numeric(10)
[1] 0 0 0 0 0 0 0 0 0 0
#文字列のベクトル
character(10)
[1] "" "" "" "" "" "" "" "" "" ""
#公差1のベクトル
10:0
[1] 10 9 8 7 6 5 4 3 2 1 0
#等差数列を作成するコマンド
#seqコマンド:seq(開始時の数字, 終了時の数字, by = 公差 or along = 配列の長さ)
head(seq(1, 10, by = 0.1))
[1] 1.0 1.1 1.2 1.3 1.4 1.5
#繰り返しのベクトルを作成するコマンド
#repコマンド:rep(ベクトル(文字列 or 数字列), times = 繰り返し回数, each = ベクトルの要素の繰り返し数)
#あ、いを3回繰り返す長さ6の文字ベクトルを2回繰り返す
rep(c("あ", "い"), times = 2, each = 3)
[1] "あ" "あ" "あ" "い" "い" "い" "あ" "あ" "あ" "い" "い" "い"
#ランダムなベクトルを作成する方法
#sampleコマンド:sample(ベクトル(文字列 or 数字列), size = 大きさ, replace = 置換え指定(TRUE or FALSE))
sample(paste("TEST", c("あ", "い"), sep = ""), size = 10, replace = TRUE)
[1] "TESTい" "TESTい" "TESTい" "TESTあ" "TESTあ" "TESTい" "TESTい" "TESTい" "TESTい" "TESTい"
<ベクトルの操作コマンド>
#繰り返しのベクトルを作成するコマンドで作成したベクトルを例にします
#ベクトルの要約
#文字列の場合
summary(TestVec)
Length Class Mode
12 character character
#数字の場合
summary(c(1:10))
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 3.25 5.50 5.50 7.75 10.00
#ベクトルの長さ
length(TestVec)
[1] 12
#単一化:uniqueコマンド
unique(TestVec)
[1] "あ" "い"
#要素の取り出し:[]を使用します。範囲の指定は[ : ]です
#4番目の要素を取り出す
TestVec[4]
[1] "い"
#6-10番目の要素を取り出す
TestVec[6:10]
[1] "い" "あ" "あ" "あ" "い"
#要素の置換:位置を指定し <- で置換えます
#元が文字列ベクトルなので数字ベクトルに変換します
TestVec[1:12] <- sample(1:10, size = 12, replace = TRUE)
class(TestVec)
[1] "character"
TestVec <- as.numeric(TestVec)
class(TestVec)
[1] "numeric"
TestVec
[1] 1 10 4 5 10 2 8 4 4 6 7 1
#条件によるベクトルの取り出し:ベクトル[条件]で指定します
TestVec[TestVec > 2 | TestVec %% 2 == 0]
[1] 1 10 4 10 2 8 4 4 6 1
#条件によるベクトルの位置を取り出す:whichコマンド
#2の倍数の位置
which(TestVec %% 2 == 0)
[1] 2 3 5 6 7 8 9 10
#降順昇順:orderコマンド
#注意:コマンドの返り値は順位です
TestVec[order(TestVec, decreasing = TRUE)]
[1] 10 10 8 7 6 5 4 4 4 2 1 1
#ベクトルで同じ値が続く回数と取り出し:rleコマンド
#結果はリストで返されます
TestVec[1:12] <- sample(1:3, size = 12, replace = TRUE)
[1] 2 2 2 2 3 2 1 1 1 2 3 2
GetRle <- rle(TestVec)
GetRle
Run Length Encoding
lengths: int [1:7] 4 1 1 3 1 1 1
values : int [1:7] 2 3 2 1 2 3 2
#おまけ
#回数を取り出す
GetRle[[1]]
[1] 4 1 1 3 1 1 1
#値を取り出す
GetRle[[2]]
[1] 2 3 2 1 2 3 2
少しでも、あなたの解析が楽になりますように!!