MA奥迪Q三GIN 一表示矩阵行

apply()

apply(m,dimcode,f,fargs)

  • m 是1个矩阵。
  • dimcode是维度编号,取壹则为对行使用函数,取二则为对列运用函数。
  • f是函数
  • fargs是f的可选参数集

> z <- matrix(1:6, nrow = 3)
> f <- function(x) {
+         x/c(2, 8)
+ }
> apply(z,1,f)  #f函数得到两个元素,则为几行,竖着来的
      [,1]  [,2] [,3]
[1,]  0.5 1.000 1.50
[2,]  0.5 0.625 0.75

apply()

apply(m,dimcode,f,fargs)

  • m 是二个矩阵。
  • dimcode是维度编号,取壹则为对行使用函数,取2则为对列运用函数。
  • f是函数
  • fargs是f的可选参数集

> z <- matrix(1:6, nrow = 3)> f <- function {+         x/c+ }> apply  #f函数得到两个元素,则为几行,竖着来的      [,1]  [,2] [,3][1,]  0.5 1.000 1.50[2,]  0.5 0.625 0.75

巡回对于代码运维来讲是可怜消耗费时间间和财富的,在Koleos中,要尽量少使用for while循环,用apply函数族的话对于数据管理会十分便于。

apply {base}
通过对数组可能矩阵的叁个维度使用函数生成值得列表可能数组、向量。
apply(X, MARGIN, FUN, …)
X 阵列,包含矩阵
MAHighlanderGIN 一表示矩阵行,2意味矩阵列,也能够是c(一,贰)

例:
xxx<-matrix(1:20,ncol=4)
apply(xxx,1,mean)
[1] 8.5 9.5 10.5 11.5 12.5
apply(xxx,2,mean)
[1] 3 8 13 18
xxx
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20

lapply {base}
经过对x的每三个要素采取函数,生成3个与成分个数同样的值列表
lapply(X, FUN, …)
X表示叁个向量可能表明式对象,别的对象将被通过as.list强制转变为list

例:
x <- list(a = 1:10, beta = exp(-3:3), logic =
c(TRUE,FALSE,FALSE,TRUE))
x
$a
[1]ca88亚洲城网站, 1 2 3 4 5 6 7 8 9 10
$beta
[1] 0.04978707 0.13533528 0.36787944 1.00000000 2.71828183
7.38905610
[7] 20.08553692
$logic
[1] TRUE FALSE FALSE TRUE
lapply(x,mean)
$a
[1] 5.5
$beta
[1] 4.535125
$logic
[1] 0.5

sapply {base}
那是3个用户本人版本,是lapply函数的包装版。该函数重回值为向量、矩阵,要是simplify=”array”,且适合的景观下,将会经过simplify2array()函数调换为阵列。sapply(x,
f, simplify=FALSE, USE.NAMES=FALSE)重临的值与lapply(x,f)是均等的。
sapply(X, FUN, …, simplify = TRUE, USE.NAMES = TRUE)
X表示三个向量恐怕表达式对象,其他对象将被通过as.list强制转换为list
simplify
逻辑值恐怕字符串,要是得以,结果应该被简化为向量、矩阵大概高维数组。必须是命名的,不可能是简写。私下认可值是TRUE,若合适将会回去一个向量或然矩阵。假若simplify=”array”,结果将回到1个阵列。
USE.NAMES 逻辑值,借使为TRUE,且x未有被取名,则对x举办命名。

例:
sapply(k, paste,USE.NAMES=FALSE,1:5,sep=”…”)
[,1] [,2] [,3]
[1,] “a…1” “b…1” “c…1”
[2,] “a…2” “b…2” “c…2”
[3,] “a…3” “b…3” “c…3”
[4,] “a…4” “b…4” “c…4”
[5,] “a…5” “b…5” “c…5”
sapply(k, paste,USE.NAMES=TRUE,1:5,sep=”…”)
a b c
[1,] “a…1” “b…1” “c…1”
[2,] “a…2” “b…2” “c…2”
[3,] “a…3” “b…3” “c…3”
[4,] “a…4” “b…4” “c…4”
[5,] “a…5” “b…5” “c…5”
sapply(k, paste,USE.NAMES=TRUE,1:5,sep=”…”,simplyfy=TRUE)
a b c
[1,] “a…1…TRUE” “b…1…TRUE” “c…1…TRUE”
[2,] “a…2…TRUE” “b…2…TRUE” “c…2…TRUE”
[3,] “a…3…TRUE” “b…3…TRUE” “c…3…TRUE”
[4,] “a…4…TRUE” “b…4…TRUE” “c…4…TRUE”
[5,] “a…5…TRUE” “b…5…TRUE” “c…5…TRUE”
sapply(k, paste,simplify=TRUE,USE.NAMES=TRUE,1:5,sep=”…”)
a b c
[1,] “a…1” “b…1” “c…1”
[2,] “a…2” “b…2” “c…2”
[3,] “a…3” “b…3” “c…3”
[4,] “a…4” “b…4” “c…4”
[5,] “a…5” “b…5” “c…5”
sapply(k, paste,simplify=FALSE,USE.NAMES=TRUE,1:5,sep=”…”)
$a
[1] “a…1” “a…2” “a…3” “a…4” “a…5”
$b
[1] “b…1” “b…2” “b…3” “b…4” “b…5”
$c
[1] “c…1” “c…2” “c…3” “c…4” “c…5”

vapply {base}
vapply类似于sapply函数,不过它的重返值有预定义类型,所以它利用起来会越来越安全,有的时候会更加快
在vapply函数中接2连三会进行简化,vapply会检查实验FUN的全部值是还是不是与FUN.VALUE包容,以使他们有着同等的长短和连串。类型顺序:逻辑<</span>整型<</span>实数<</span>复数
vapply(X, FUN, FUN.VALUE, …, USE.NAMES = TRUE)
X表示叁个向量大概表明式对象,别的对象将被通过as.list强制调换为list
simplify
逻辑值大概字符串,纵然能够,结果应当被简化为向量、矩阵也许高维数组。必须是命名的,不能是简写。默许值是TRUE,若合适将会回到2个向量大概矩阵。假使simplify=”array”,结果将重临两个阵列。
USE.NAMES 逻辑值,假设为TRUE,且x未有被命名,则对x进行命名。
FUN.VALUE 贰个通用型向量,FUN函数再次回到值得模板

例:
x<-data.frame(a=rnorm(4,4,4),b=rnorm(4,5,3),c=rnorm(4,5,3))
vapply(x,mean,c(c=0))
a b c
1.8329043 6.0442858 -0.1437202
k<-function(x)

  • {
  • list(mean(x),sd(x))
  • }

vapply(x,k,c(c=0))
不当于vapply(x, k, c(c = 0)) : 值的长短必需为壹,
但FUN(X[[1]])结果的长短却是2
vapply(x,k,c(c=0,b=0))
不当于vapply(x, k, c(c = 0, b = 0)) : 值的项目必需是’double’,
但FUN(X[[1]])结果的花色却是’list’
vapply(x,k,c(list(c=0,b=0)))
a b c
c 1.832904 6.044286 -0.1437202
b 1.257834 1.940433 3.649194

tapply {base}
对不规则阵列使用向量,即对壹组非空值依据一组明显因子实行相应计算
tapply(X, INDEX, FUN, …, simplify = TRUE)
x 2个原子向量,标准的是三个向量
INDEX 因子列表,和x长度同样,成分将被通过as.factor强制调换为因子
simplify
若为FALSE,tapply将以列表格局再次来到阵列。若为TRUE,FUN则直接再次回到数值

例:
height <- c(174, 165, 180, 171, 160)
sex<-c(“F”,”F”,”M”,”F”,”M”)
tapply(height, sex, mean)
F M
170 170

eapply {base}
eapply函数通过对environment中命名值进行FUN总计后赶回一个列表值,用户可以请求全体应用过的命名对象。
eapply(env, FUN, …, all.names = FALSE, USE.NAMES = TRUE)
env 将被利用的意况
all.names 逻辑值,提醒是或不是对全数值使用该函数
USE.NAMES 逻辑值,提醒重返的列表结果是或不是带有命名

例:
require(stats)

env <- new.env(hash = FALSE) # so the order is fixed
env$a <- 1:10
env$beta <- exp(-3:3)
env$logic <- c(TRUE, FALSE, FALSE, TRUE)

what have we there?

utils::ls.str(env)
a : int [1:10] 1 2 3 4 5 6 7 8 9 10
beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 …
logic : logi [1:4] TRUE FALSE FALSE TRUE

compute the mean for each list element

eapply(env, mean)
$logic
[1] 0.5
$beta
[1] 4.535125
$a
[1] 5.5
unlist(eapply(env, mean, USE.NAMES = FALSE))
[1] 0.500000 4.535125 5.500000

median and quartiles for each element (making use of “…” passing):

eapply(env, quantile, probs = 1:3/4)
$logic
25% 50% 75%
0.0 0.5 1.0
$beta
25% 50% 75%
0.2516074 1.0000000 5.0536690

$a
25% 50% 75%
3.25 5.50 7.75

eapply(env, quantile)
$logic
0% 25% 50% 75% 100%
0.0 0.0 0.5 1.0 1.0
$beta
0% 25% 50% 75% 100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692
$a
0% 25% 50% 75% 100%
1.00 3.25 5.50 7.75 10.00

mapply {base}
mapply是sapply的多变量版本。将对…中的各种参数运营FUN函数,如有须求,参数将被循环。
mapply(FUN, …, MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE)
MoreArgs FUN函数的其他参数列表
SIMPLIFY
逻辑或许字符串,能够减掉结果形成3个向量、矩阵恐怕越来越高维阵列,详见sapply的simplify参数
USE.NAMES 逻辑值,假设第一个参数…已被取名,将采取那几个字符向量作为名字

例:
mapply(rep, 1:4, 4:1)
[[1]]
[1] 1 1 1 1
[[2]]
[1] 2 2 2
[[3]]
[1] 3 3
[[4]]
[1] 4

rapply {base}
rapply是lapply的递归版本
rapply(X, FUN, classes = “ANY”, deflt = NULL, how = c(“unlist”,
“replace”, “list”), …)
X 一个列表
classes 关于类名的字符向量,或许为any时则相配任何类
deflt 暗中认可结果,如若应用了how=”replace”,则不能够选用
how 字符串相称三种或者结果

ca88亚洲城网站 1

apply.png

lapply()

lapply()(代表list apply)与矩阵的apply()函数的用法类似,
对列表的种种组件实行给定的函数,并再次来到另三个列表。

> x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, mean)
$a
[1] 5.5

$beta
[1] 4.535125

$logic
[1] 0.5

lapply()

lapply()(代表list apply)与矩阵的apply()函数的用法类似,
对列表的各种组件实施给定的函数,并再次回到另3个列表。

> x <- list(a = 1:10, beta = exp, logic = c(TRUE,FALSE,FALSE,TRUE))> lapply$a[1] 5.5$beta[1] 4.535125$logic[1] 0.5

最后我认为没供给集这么多记住apply就行apply不可能消除的时候再去找别的的apply函数族函数!!

sapply()

sapply()(代表simplified [l]apply)能够将结果整理以向量,矩阵,列表
的情势出口。

> sapply(x, mean)
       a     beta    logic 
5.500000 4.535125 0.500000 
> sapply(x, quantile)   #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。
         a        beta logic
0%    1.00  0.04978707   0.0
25%   3.25  0.25160736   0.0
50%   5.50  1.00000000   0.5
75%   7.75  5.05366896   1.0
100% 10.00 20.08553692   1.0
> sapply(2:4, seq)
[[1]]
[1] 1 2

[[2]]
[1] 1 2 3

[[3]]
[1] 1 2 3 4

sapply()

sapply()(代表simplified [l]apply)能够将结果整理以向量,矩阵,列表
的款型出口。

> sapply       a     beta    logic 5.500000 4.535125 0.500000 > sapply(x, quantile)   #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。         a        beta logic0%    1.00  0.04978707   0.025%   3.25  0.25160736   0.050%   5.50  1.00000000   0.575%   7.75  5.05366896   1.0100% 10.00 20.08553692   1.0> sapply[[1]][1] 1 2[[2]][1] 1 2 3[[3]][1] 1 2 3 4

部分参阅数据人网

vapply()

vapply()与sapply()相似,他能够预先内定的回来值类型。使得得到的结果更是安全。

> vapply(x, quantile, c(1,2,5,6,8))   #它需要一个5个长度的向量来告诉他返回的类型,向量里面的内容可以变换
         a        beta logic
0%    1.00  0.04978707   0.0
25%   3.25  0.25160736   0.0
50%   5.50  1.00000000   0.5
75%   7.75  5.05366896   1.0
100% 10.00 20.08553692   1.0

vapply()

vapply()与sapply()相似,他能够预先钦赐的回到值类型。使得获得的结果更是安全。

> vapply(x, quantile, c(1,2,5,6,8))   #它需要一个5个长度的向量来告诉他返回的类型,向量里面的内容可以变换         a        beta logic0%    1.00  0.04978707   0.025%   3.25  0.25160736   0.050%   5.50  1.00000000   0.575%   7.75  5.05366896   1.0100% 10.00 20.08553692   1.0

tapply( )

tapply(x,f,g)需求向量 x (x不得以是数据框),因子或因子列表 f 以及函数
g 。
tapply()试行的操作是:一时将x分组,每组对应2个因子水平,获得x的子向量,然后这一个子向量应用函数
g

> a <- c(24,25,36,37)
> b <- c('q', 'w', 'q','w')
> tapply(a, b, mean)
 q  w 
30 31 

tapply

tapply必要向量 x ,因子或因子列表 f 以及函数 g 。
tapply()推行的操作是:近年来将x分组,每组对应贰个因子水平,获得x的子向量,然后这几个子向量应用函数
g

> a <- c(24,25,36,37)> b <- c('q', 'w', 'q','w')> tapply(a, b, mean) q  w 30 31 

mapply()

多参数版本的sapply()。第3回总计传入各组向量的第2个元素到FUN,举行结算获得结果;第3遍传入各组向量的第一个要素,得到结果;第一次传入各组向量的第8个成分…依此类推。

l1 <- list(a = c, b = cl2 <- list(c = c, d = cmapply(sum, l1$a, l1$b, l2$c, l2$d)## [1] 64 68 72 76 80 84 88 92 96 100

相关文章