金塔凯元建设集团有限公司官方网站,设计网站有没有版权,ppt图标网站链接怎么做,物联网开发软件有哪些apply函数族
apply函数族是R语言中帮助用户实现高效的向量化运算的一系列函数#xff0c;包括apply,lapply,sapply,vapply等。
apply()
apply函数以列或行为单位进行循环操作#xff0c;可以处理matrix、array数据#xff0c;返回一个向量或matrix。
apply(data,1/2,fuc…apply函数族
apply函数族是R语言中帮助用户实现高效的向量化运算的一系列函数包括apply,lapply,sapply,vapply等。
apply()
apply函数以列或行为单位进行循环操作可以处理matrix、array数据返回一个向量或matrix。
apply(data,1/2,fuction)apply函数有三个参数第一个参数传入环境中已有的数据第二个参数只能传入1或21代表按行处理2代表按列处理第三个参数传入一个函数对数据进行相应的处理。
#求mtcars数据框中每一列的平均值apply(mtcars, 2, mean)mpg cyl disp hp drat wt qsec vs am gear carb 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750 0.437500 0.406250 3.687500 2.812500lapply()
lapply函数是list apply的缩写处理list数据返回一个list。因为列表来者不拒什么数据都能放所以lapply的应用场景较多。但是用meansum等处理数值型数据的函数来处理list中的逻辑型、字符型数据是有问题的返回NA。
lapply(data,fuction)lapply函数有两个参数第一个参数传入环境中已有的列表第二个参数传入一个函数。
#新建一个列表保存着mtcars数据集、字符型向量、整型向量三组数据
df_list - list(data1mtcars,data2c(a,b,c),data3c(1:20)
)
#求列表中三组数据的最大值lapply(df_list,max)
$data1
[1] 472
$data2
[1] c
$data3
[1] 20
#求列表中三组数据的平均值lapply(df_list,mean)
$data1
[1] NA
$data2
[1] NA
$data3
[1] 10.5
Warning messages:
1: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值回覆NA
2: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值回覆NAsapply()
sapply函数是对lapply处理结果的向量化保存处理list数据返回一个向量。
sapply(data,fuction)sapply函数有两个参数第一个参数传入环境中已有的列表第二个参数传入一个函数。 sapply(df_list, max)
data1 data2 data3
472 c 20 sapply(df_list, mean)
data1 data2 data3 NA NA 10.5
Warning messages:
1: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值回覆NA
2: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值回覆NAsapply函数还有一个参数simplify默认值为TRUE设置为FALSE的话跟lapply的结果就完全一样了这样看来lappy和sapply记住一个sapply就好了。 sapply(df_list, max,simplify FALSE)
$data1
[1] 472
$data2
[1] c
$data3
[1] 20除了上述三个函数apply函数族中还有vapply、mapply等函数不过这三个函数在绝大多数应用场景中应该够用了按行或列处理数组时用apply处理list时用sapply其他的需要的时候再看了。
详细见下表
函数用法输入输出语法apply对阵列行或者列使用函数ArrayArray/Listapply(X, MARGIN, FUN, …)lapply对列表或者向量使用函数List/expressionListlapply(X, FUN, …)sapply对列表或者向量使用函数List/expressionList/Arraysapply(X, FUN, …, simplify TRUE, USE.NAMES TRUE)vapply对列表或者向量使用函数List/expressionArrayvapply(X, FUN, FUN.VALUE, …, USE.NAMES TRUE)tapply对不规则阵列使用函数ArrayArray/Listtapply(X, INDEX, FUN NULL, …, simplify TRUE)eapply对环境中的值使用函数Values in an EnvironmentListeapply(env, FUN, …, all.names FALSE, USE.NAMES TRUE)mapply对多个列表或者向量参数使用函数List/ArrayList/Arraymapply(FUN, …, MoreArgs NULL, SIMPLIFY TRUE, USE.NAMES TRUE)rapply运用函数递归产生列表ListList/Vectorrapply(object, f, classes “ANY”, deflt NULL,how c(“unlist”, “replace”, “list”), …)