ベクトルや行列などに関数を適用する関数
関数名 | 入力 | 出力 | 備考 |
---|---|---|---|
lappy | リスト | リスト | |
sapply | リスト | ベクトル | |
vapply | リスト | ベクトル | sapplyの高速版? |
apply | ベクトル | ベクトル / リスト |
x <- list(a = 1:3, b = seq(2,10,2))
x
## $a
## [1] 1 2 3
##
## $b
## [1] 2 4 6 8 10
str(x)
## List of 2
## $ a: int [1:3] 1 2 3
## $ b: num [1:5] 2 4 6 8 10
# リストの長さ
y <- lapply(x, FUN=length)
y
## $a
## [1] 3
##
## $b
## [1] 5
# 平均を適用する
z <- lapply(x, FUN=sum)
z
## $a
## [1] 6
##
## $b
## [1] 30
# 結果をベクトルで表示
w <- sapply(x, FUN=sum)
w
## a b
## 6 30
vapply(x, FUN = length, FUN.VALUE = 0L)
## a b
## 3 5
配列に関数を展開する関数
a <- matrix(1:9,3,3)
a
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
# MARGINは次元(行は1次元、列は2次元)
apply(a, MARGIN= 1, FUN=max)
## [1] 7 8 9
apply(a, MARGIN= 2, FUN=max)
## [1] 3 6 9
# array 複数次元を作成する
b <- array(1:27, c(3,3,3))
b
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 19 22 25
## [2,] 20 23 26
## [3,] 21 24 27
apply(b, MARGIN=3, FUN=sum)
## [1] 45 126 207
ベクトルを要約する関数
# tapply(data, INDEX(list), FUN=)
x <- sample(letters, 50, replace = TRUE)
tapply(x, x, length)
## b c d e f g i j k l m o p q r t u v w x y
## 2 3 2 1 3 3 6 4 2 3 1 2 1 1 2 2 1 3 2 1 5
式を繰り返し評価する関数
n <- c(3,6)
replicate(10, n, simplify = "array")
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 3 3 3 3 3 3 3 3 3 3
## [2,] 6 6 6 6 6 6 6 6 6 6
# 文字列の繰り返し
replicate(3, "GOAL!!")
## [1] "GOAL!!" "GOAL!!" "GOAL!!"
rep("GOAL!!", 3)
## [1] "GOAL!!" "GOAL!!" "GOAL!!"
copyrigth © 2016 r-beginners.com All rigths reserved.
PAGE TOP ▲