R(ベクトル)

2024年12月17日 (火)

[R]ベクトルから指定の条件に一致する要素を抜き出す

which関数を使う。戻り値はインデックスであることに注意。指定の条件に一致する要素がない場合は、長さが0のベクトルが返される。最後の例のとおり、|記号(||記号ではない!)を使うと複数の条件を指定することもできる。

> n <- 2 ^ (0:8)
> print(n)
[1] 1 2 4 8 16 32 64 128 256
> which(n > 100)
[1] 8 9
> which(n > 1000)
integer(0)
> length(which(n > 100))
[1] 2
> length(which(n > 1000))
[1] 0
> seiyu <- c("安野希世乃", "鈴木みのり", "本渡楓")
> which(seiyu == "鈴木みのり")
[1] 2
> which(seiyu == "鈴木みのり" | seiyu == "本渡楓")
[1] 2 3

2024年11月28日 (木)

[R]ベクトルの要素について累積の積を求める

ベクトルの要素の値をインデックス順に掛けた累積の値を得るには、cumprod関数を使う。順番に要素を掛けるだけのため、最後の例のように要素の値をすべて同じにすれば、単純に累乗が求まることになる。

> i <- 1:5
> i
[1] 1 2 3 4 5
> cumprod(i)
[1] 1 2 6 24 120
> i <- rep(2, 8)
> i
[1] 2 2 2 2 2 2 2 2
> cumprod(i)
[1] 2 4 8 16 32 64 128 256

2024年11月27日 (水)

[R]ベクトルの要素について累積の和を求める

ベクトルの要素の値をインデックス順に足した累積の値を得るには、cumsum関数を使う。

> i <- 1:10
> i
[1] 1 2 3 4 5 6 7 8 9 10
> cumsum(i)
[1] 1 3 6 10 15 21 28 36 45 55

2024年4月18日 (木)

[R]要素を一つも持たない空のベクトルを作る

要素にNULL指定して代入すればよい。

> s <- c(NULL)
> print(s)
NULL
> length(s)
[1] 0

空のベクトルが何の役に立つかというと、制御構文の都合でベクトルに値を代入だけをしたい場合は、最初に空にしておくことで、要素を代入する式のみ書けばいいことになり、すっきりしたスクリプトを書くことができる。

> s <- c(NULL)
> c(s, "鈴木みのり", "セナディア")
[1] "鈴木みのり" "セナディア"
> n <- c(NULL)
> print(n)
NULL
> for (i in 1:3) {n <- c(n, i)}
> print(n)
[1] 1 2 3

2024年4月16日 (火)

[R]ベクトルの要素の任意の場所に要素を追加する

append関数を使う。afterオプションには、挿入したい場所の直前のインデックスを指定する。

> s <- c("石見舞菜香", "のぐちゆり")
> s <- append(s, "和多田美咲", after = 1)
> print(s)
[1] "石見舞菜香" "和多田美咲" "のぐちゆり"

afterオプションに0を指定すると先頭に要素を挿入する。afterオプションのデフォルトの値はlength(s)であるので、何も指定しなければ、自動的に最後の要素の次に追加される。

> s <- append(s, "大橋彩香", after = 0)
> print(s)
[1] "大橋彩香" "石見舞菜香" "和多田美咲" "のぐちゆり"
> s <- append(s, "野口瑠璃子")
> print(s)
[1] "大橋彩香" "石見舞菜香" "和多田美咲" "のぐちゆり" "野口瑠璃子"

2024年4月12日 (金)

[R]ベクトルの要素の最後に要素を追加する

c関数を使う。

> s <- c("鈴木みのり", "石見舞菜香", "和多田美咲")
> print(s)
[1] "鈴木みのり" "石見舞菜香" "和多田美咲"
> s <- c(s, "のぐちゆり")
> print(s)
[1] "鈴木みのり" "石見舞菜香" "和多田美咲" "のぐちゆり"

append関数も使える。afterオプションには、挿入したい場所の直前のインデックスを指定できるが、afterオプションのデフォルトの値はlength(s)であるので、最後の要素の次に追加される。

> s <- append(s, "野口瑠璃子")
> print(s)
[1] "鈴木みのり" "石見舞菜香" "和多田美咲" "のぐちゆり" "野口瑠璃子"

2024年4月11日 (木)

[R]ベクトルの要素の先頭に要素を追加する

c関数を使う。

> s <- c("石見舞菜香", "和多田美咲", "のぐちゆり")
> print(s)
[1] "石見舞菜香" "和多田美咲" "のぐちゆり"
> s <- c("鈴木みのり", s)
> print(s)
[1] "鈴木みのり" "石見舞菜香" "和多田美咲" "のぐちゆり"

append関数も使える。afterオプションには、挿入したい場所の直前のインデックスを指定する。この例では先頭(=1)に挿入したいのでその直前である0を指定する。

> s <- append(s, "大橋彩香", after = 0)
> print(s)
[1] "大橋彩香" "鈴木みのり" "石見舞菜香" "和多田美咲" "のぐちゆり"

2024年3月29日 (金)

[R]ベクトルに値を代入する

代入演算子<-を使う。

> n <- 58
> s <- "ライスシャワー役の石見舞菜香さんかわいい"
> n
[1] 58
> s
[1] "ライスシャワー役の石見舞菜香さんかわいい"

2024年3月22日 (金)

[R]ベクトルのインデックスベクトルを作成する

seq_along関数は引数に指定したベクトルのインデックス(初項1、公差1、末項と項数がベクトルの長さの等差数列)となるベクトルを作成する。戻り値は1:length(v)(vはベクトル)と同じであり、これよりはシンプルな書き方をすることができる。

> s <- c("大橋彩香", "石見舞菜香", "優木かな", "和多田美咲")
> seq_along(s)
[1] 1 2 3 4
> 1:length(s)
[1] 1 2 3 4

2024年1月20日 (土)

[R]ベクトルの要素について集計する

table関数を使うと、ベクトルの要素に含まれる値を集計することができる。以下は英大文字を復元抽出で32個選び、それを集計した例。戻り値はテーブル型になる。

> LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P"
[17] "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
> s <- sample(LETTERS, 32, replace = TRUE)
> print(sort(s))
[1] "A" "C" "C" "D" "D" "G" "H" "H" "J" "K" "L" "L" "M" "M" "O" "O"
[17] "Q" "Q" "Q" "R" "U" "V" "V" "V" "W" "W" "W" "W" "X" "Y" "Y" "Z"
> tab <- table(s)
> print(tab)
s
A C D G H J K L M O Q R U V W X Y Z
1 2 2 1 2 1 1 2 2 2 3 1 1 3 4 1 2 1
> tab['A']
A
1
> tab[c('A', 'Q')]
s
A Q
1 3
> class(tab)
[1] "table"
> as.data.frame(tab)
s Freq
1 A 1
2 C 2
3 D 2
4 G 1
5 H 2
6 J 1
7 K 1
8 L 2
9 M 2
10 O 2
11 Q 3
12 R 1
13 U 1
14 V 3
15 W 4
16 X 1
17 Y 2
18 Z 1

より以前の記事一覧

無料ブログはココログ

■■

■■■