Apply関数群

lapply, sapply, vapply

ベクトルや行列などに関数を適用する関数

関数名 入力 出力 備考
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

apply

配列に関数を展開する関数

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

ベクトルを要約する関数

# 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

replicate

式を繰り返し評価する関数

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!!"
最終更新日:2016/04/27

copyrigth © 2016 r-beginners.com All rigths reserved.

PAGE TOP ▲