R语言学习系列09-自定义函数与apply函数族

合集下载

掌握R语言中的apply函数族

掌握R语言中的apply函数族

掌握R语言中的apply函数族前言刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算。

那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言本身来实现的,而向量操作是基于底层的C语言函数实现的,从性能上来看,就会有比较明显的差距了。

那么如何使用C的函数来实现向量计算呢,就是要用到apply的家族函数,包括apply, sapply, tapply, mapply, lapply, rapply, vapply, eapply等。

目录1.apply的家族函数2.apply函数pply函数4.sapply函数5.vapply函数6.mapply函数7.tapply函数8.rapply函数9.eapply函数1. apply的家族函数apply函数族是R语言中数据处理的一组核心函数,通过使用apply函数,我们可以实现对数据的循环、分组、过滤、类型控制等操作。

但是,由于在R语言中apply函数与其他语言循环体的处理思路是完全不一样的,所以apply函数族一直是使用者玩不转的一类核心函数。

很多R语言新手,写了很多的for循环代码,也不愿意多花点时间把apply函数的使用方法了解清楚,最后把R代码写的跟C似得,作者严重鄙视只会写for的R程序员。

apply函数本身就是解决数据循环处理的问题,为了面向不同的数据类型,不同的返回值,apply函数组成了一个函数族,包括了8个功能类似的函数。

这其中有些函数很相似,有些也不是太一样的。

一般最常用的函数为apply和sapply,下面将分别介绍这8个函数的定义和使用方法。

2. apply函数apply函数是最常用的代替for循环的函数。

apply函数可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数传递的形式给自定义的FUN函数中,并以返回计算结果。

r function函数

r function函数

r function函数R语言是一种广泛使用的开源编程语言,用于数据分析、统计建模和可视化。

在R语言中,函数是一种非常重要的概念,它允许用户将一段代码封装成一个可重复使用的模块。

本文将介绍R语言中的函数及其应用。

1. 函数定义在R语言中,函数定义使用关键字function。

一个简单的函数定义如下:```my_function <- function(x) {y <- x^2return(y)}```上述代码定义了一个名为my_function的函数,它接受一个参数x,并返回x的平方。

在函数体内部,可以编写任意数量的代码行。

2. 函数调用要调用一个函数,只需要使用函数名并传递必要的参数即可。

例如,在上述示例中,要计算3的平方,可以使用以下代码:```result <- my_function(3)```这将把9赋值给变量result。

3. 函数参数在R语言中,函数可以有零个或多个参数。

例如,在下面这个示例中,我们定义了一个带有两个参数(x和y)的函数:```add_numbers <- function(x, y) {z <- x + yreturn(z)}```该函数将传递给它的两个参数相加,并返回结果。

4. 默认参数值在R语言中,可以为函数参数指定默认值。

如果不传递该参数,则使用默认值。

例如,在下面这个示例中,我们定义了一个带有一个默认参数值的函数:```greet <- function(name = "World") {message <- paste("Hello", name)print(message)}```如果不传递任何参数,则该函数将打印“Hello World”。

如果传递一个参数,则该函数将使用传递的名称打印一条消息。

5. 可变数量的参数在R语言中,可以定义一个可变数量的参数。

这些参数用三个点(...)表示。

r语言 自定义函数编写格式 -回复

r语言 自定义函数编写格式 -回复

r语言自定义函数编写格式-回复R语言是一种开源的编程语言,被广泛应用于数据分析和统计建模等领域。

除了提供大量的内置函数外,R语言还支持用户自定义函数,以便更好地适应特定的编程需求。

本文将介绍R语言中自定义函数的编写格式,并以此为主题,逐步解释。

自定义函数是指用户自行编写的操作序列,可以接受输入参数并返回相应的结果。

通过使用自定义函数,我们可以将一系列重复的操作封装起来,以提高代码的可复用性和可读性。

首先,我们需要使用关键字"function"定义一个函数。

函数定义的基本格式如下:function_name <- function(arguments) {# 函数体# 可以包含一系列的操作# 并通过return语句返回结果}在函数定义中,function_name代表函数的名称,arguments是函数的输入参数。

我们可以根据实际需求,定义一个或多个输入参数,并在函数体中使用它们。

函数体是函数的核心部分,用于实现具体的功能。

在函数体中,我们可以使用R语言的内置函数、控制结构、变量等。

在函数体中,我们可以使用return语句来返回结果。

return语句用于将函数的执行结果返回给调用者。

例如,我们可以使用return语句返回计算结果,或者返回一个处理后的数据集。

如果没有显式地使用return语句,函数将返回最后一行执行的表达式作为结果。

在定义函数时,我们可以为输入参数指定默认值。

通过为输入参数设置默认值,我们可以在调用函数时省略这些输入参数,而使用默认值。

例如,我们可以定义一个计算平方的函数,其中输入参数的默认值设置为2:square <- function(x = 2) {return(x^2)}在调用函数时,如果不指定输入参数的值,函数将使用默认值进行计算。

例如,square()将返回4,而square(3)将返回9。

除了定义输入参数和设置默认值外,我们还可以定义变量作为函数的局部变量。

4-R语言函数语句及自建函数编写

4-R语言函数语句及自建函数编写
Fun函数的灵活决定了apply函数有很大的开发 处理功能和快捷使用功能。
R语言常用函数语句
lapply 函数
pply(X, FUN, ...) • x:操作对象,为列表、数据框、向量。 • 返回为列表 • Fun:1.操作函数
tapply 函数
3.sapply(X, FUN,simplify=TRUE) • 比函数lapply()多了一个参数simplify • 若simplify=FALSE,则同lapply(); • 若为TRUE,则将输出的list简化为向量或矩阵;
else(condition){}
●ifelse(condition, statement1, statement2)con是逻辑条件,当逻辑条件的值为TRUE时,则输 出statement1的值,否则输出statement2的值。
=>绘制分段函数:
������ =
������2, 1 ≤ ������ ≤ 3 ������ + 5, ������ ≥ 3
f (x) 1 3 x 1 x2 24 4
假设X ~ U (0,1,) 则
1
E( f (X )) J 0 f (x)dx
0
所以求定积分的近似值就是求随机变量f(X) 的期望 的近似 值。由辛钦大数定律,我们可用f(X) 的模拟值去近似计算 定积分 。具体做法如下:先用计算机产生大量的[0,1]均 匀分布随机数 ,然后计算每个f(Xi) ,最后得积分的近似 值
实用统计软件
——R语言
班级:统计1702 学号:17271119 姓名: 成长锦
R语言常用函数语句
■ R语言常用循环语句与其他编程语言思想类似,使用也类似。
(1) for循环

R语言里面的apply()家族简述

R语言里面的apply()家族简述

R语言里面的apply()家族简述我能想到的所有套路,毒液里面都有。

这个教程目的在于介绍apply()家族在R语言的用法,apply()函数算是R语言里面很基础的一个函数,同时还有sapply()、lapply()、tapply()函数精简了apply()的用法。

apply()函数是一个很R语言的函数,可以起到很好的替代冗余的for循环的作用,在一篇博客里面介绍过,R语言的循环操作for和while,都是基于R语言本身来实现的,而向量操作是基于底层的C语言函数实现的,所以使用apply()家族进行向量计算是高性价比的。

apply()可以面向数据框、列表、向量等,同时任何函数都可以传递给apply()函数。

apply()函数apply()函数的用法如下:apply(X, MARGIN, FUN)Here:-x: 一个数组或者矩阵-MARGIN: 两种数值1或者2决定对哪一个维度进行函数计算-MARGIN=1`: 操作基于行-MARGIN=2`: 操作基于列-MARGIN=c(1,2)`: 对行和列都进行操作-FUN: 使用哪种操作,内置的函数有mean(平均值)、medium (中位数)、sum(求和)、min(最小值)、max(最大值),当然还包括广大的用户自定义函数一个最简单的例子就是使用apply()对一个matrix求和,以下代码是对列求和:> m1 <- matrix(C<-(1:10),nrow=5, ncol=6)> m1[,1] [,2] [,3] [,4] [,5] [,6][1,] 1 6 1 6 1 6[2,] 2 7 2 7 2 7[3,] 3 8 3 8 3 8[4,] 4 9 4 9 4 9[5,] 5 10 5 10 5 10> a_m1 <- apply(m1, 2, sum)> a_m1[1] 15 40 15 40 15 40lapply()函数lapply()函数中多出来的l代表的是list,所以lapply()和apply()的区别在于输出的格式,lapply()的输出是一个列表(list),所以lapply()函数不需要MARGIN参数:lapply(X, FUN)Arguments:-X: 一个向量或者是一个对象-FUN: 对X里面每个元素进行操作的函数一个很简单的示例操作就是把一个字符向量里面的字符转成小写:> movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN") > class(movies)[1] "character"> movies_lower <-lapply(movies, tolower)> str(movies_lower)List of 4$ : chr "spyderman"$ : chr "batman"$ : chr "vertigo"$ : chr "chinatown"我们可以看到,输出的内容是以list形式给出的,为了方便,我们可以使用unlist()函数进行整合:> movies_lower <-unlist(lapply(movies,tolower))> str(movies_lower)chr [1:4] "spyderman" "batman" "vertigo" "chinatown" sapply()函数sapply()函数做的事情和lapply()一样,可以理解为是一个简化的lapply,返回的是一个向量(vector)使得对解读更加友好,其使用方法和lapply一样,不过多了两个参数: simplify&s,simplify = T可以将输出结果数组化,如果设置为false,sapply()函数就和lapply()函数没有差别了,s = T可以设置字符串为字符名。

c函数r语言

c函数r语言

c函数r语言摘要:1.函数与R 语言简介2.R 语言中常用的函数类型3.函数的参数与返回值4.自定义函数与匿名函数5.函数在数据处理与分析中的应用正文:R 语言是一种功能强大的编程语言,广泛应用于数据处理、统计分析和可视化等领域。

在R 语言中,函数是一段可重复使用的代码,可以简化代码编写,提高工作效率。

本文将介绍R 语言中函数的基本概念、类型以及应用。

1.函数与R 语言简介R 语言是一种基于Bell 实验室的S 语言的编程语言,拥有丰富的函数库和强大的数据处理能力。

在R 语言中,函数是一段可重复使用的代码,通过调用函数名并传递参数,可以实现特定功能。

2.R 语言中常用的函数类型R 语言中的函数类型主要有两种:内置函数和自定义函数。

(1) 内置函数:R 语言提供了丰富的内置函数,涵盖了数据处理、统计分析、绘图等多个领域。

这些函数无需额外安装,可以直接在R 中调用。

(2) 自定义函数:用户可以根据自己的需求编写自定义函数,实现特定的功能。

自定义函数可以提高代码的复用性,降低编程难度。

3.函数的参数与返回值R 语言中的函数通过参数传递数据,实现特定功能。

函数可以有输入参数(input arguments)和输出参数(output arguments)。

输入参数在函数定义中用括号表示,而输出参数用箭头表示。

例如,`mean`函数的定义为`mean(x, ...)`,其中`x`是输入参数,表示要计算平均值的数据向量,而`...`表示可选择的输出参数,用于返回描述统计信息。

4.自定义函数与匿名函数自定义函数是通过`function`关键字定义的函数,可以实现特定功能。

例如,定义一个计算平方的函数:```Rsquare <- function(x) {x * x}```匿名函数是一种简化版的自定义函数,可以快速实现简单的功能。

匿名函数不需要显式定义函数名,直接使用函数表达式即可。

例如:```Rsquare <- function(x) x * x```5.函数在数据处理与分析中的应用在R 语言中,函数广泛应用于数据处理和分析。

r语言apply

r语言apply

r语言apply在R语言中,apply系列函数可以对向量、矩阵、数据框一次性对整体数据应用函数运算,非常方便一、apply()函数定义:apply()函数按矩阵的行或列方向应用指定函数。

apply(x # 数组或矩阵MARGIN #应用函数的方向,1行2列FUN # 应用的函数)# 返回值根据数据Data的数据类型与Fun的返回值自动判断返回的数据类型这里举个例子:s <- matrix(1:9,ncol = 3)apply(s,1,sum)apply(s,2,sum)即可得到下列结果:apply(s,1,sum)[1] 12 1518apply(s,2,sum)[1] 6 15 24在举一个R语言自带的鸢尾花数据集例子:结果如下:apply(iris[,1:4],2,sum)Sepal.Length Sepal.WidthPetal.Length Petal.Width 876.5 458.6 563.7 179.9如果小伙伴们对鸢尾花数据集不了解可以输入iris查看。

于此同时R语言中还定义了rowSums(),rowMeans(),colSums(),colMeans()函数对行列进行求和、均值的函数。

使用方式也很简单。

二、lapply()函数定义:lapply()函数以列表的形式返回函数的结果lapply(X #向量、列表、表达式、数据库FUN #应用的函数... #额外参数,会被传递给fun函数)继续使用鸢尾花数据集举例:结果如下:lapply(iris[,1:4],mean)$Sepal.Length[1]5.843333$Sepal.Width[1] 3.057333$Petal.Length[1] 3.758$Petal.Width[1] 1.199333可以看到结果以列表的形式返回,可以使用unlist()函数将结果转换为向量。

unlist(#将列表转换为向量X #R对象recursive = FALSE #是否对x中的列表进行递归转换s = TRUE #是否保留列表中的值名称)unlist(lapply(iris[,1:4],mean))结果如下所示:unlist(lapply(iris[,1:4],mean))Sepal.LengthSepal.WidthPetal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333三、sapply()函数sapply()函数与lapply()函数类似,其结果以矩阵、向量的数据类型返回。

apply函数族_光环大数据培训机构

apply函数族_光环大数据培训机构

apply函数族_光环大数据培训机构R语言apply系列函数的基本作用是对数组(array,可以是多维)或者列表(list)按照元素或元素构成的子集合进行迭代,并将当前元素或子集合作为参数调用某个指定函数。

vector是一维的array,dataframe可以看作特殊的list。

作用目标在每个元素上应用在子集合上应用arrayapplytapplylistlapply (…)by其中 lapply(…) 为一族函数,包括简化版: sapply,递归版: rapply。

其中sapply又可分为可设置返回值模板vapply和多变量版mapply。

另外vector 比较特殊,vector是一维的array,但是却不全是和array使用相同的函数。

在按元素迭代的情况下,使用和list一样的 lapply 函数;而在按子集合迭代的情况下, tapply 和 by 都能用,只是返回值形式不同。

1. apply函数在array上,沿margin方向,依次调用 FUN,返回结果通常为Array类型,如果返回值的向量长度不等,则返回List对象。

margin表示数组引用的第几维下标(即array[index1, index2, …]中的第几个index),margin = 1表示行,2表示列,c(1,2) 表示行和列。

&ndash; 举例1:# 二维矩阵对象x <- cbind(x1 = 3, x2 = c(4:1, 2:5))dimnames(x)[[1]] <- letters[1:8]apply(x, 2, mean, trim = .2)apply(x, 1, mean, trim = .2)apply(x, 2, sort)&ndash; 举例2:#三维数组对象,数据向量中的值被赋给数组中的值时,将遵循&ldquo;主列顺序&rdquo;,即第一个下标变化最快,最后的下表变化最慢。

r语言 apply

r语言 apply

r语言 applyapply的本义是指“将甲物置于乙物之上”,现代英语中仍保留“粘贴”的意思,并由此引申表示将某物“应用”或“运用”于另一物使之发挥或取得实际效益。

apply作“敷,涂”解时,是正式用法,及物动词仅用于说明书中。

在会话中和大多数文字中,则代之以put 〔rub〕 it on, rub〔spread〕 it in。

表示“把…敷〔涂〕在…之上”可说apply sth to...。

apply后可接药物、油漆、冰块等作宾语,而to的宾语可以是物,也可以是人体的某个部位。

apply作“应用领域,采用”解时,也就是及物动词,可至规章、条例、精力、经验、用心、智力等作宾语; to的宾语即可就是人,也可是物或事。

apply后还可接反身代词作宾语,表示“把(精力等)投入到…”,其后一般接带介词to 引起的短语。

不用于被动结构,也不用于进行时态。

apply作“适用于”解时,指理论、原则等适用于,仅用做不及物动词。

apply作“申请”解时是不及物动词,常用于“apply to...for...”结构表示“向…申请…”,介词to的宾语可以是人或组织机构, for的宾语可以是物或职位等。

apply还可以则表示亲自或用信件轻易向掌权者命令同意其建议或提出申请。

1. investors can apply for a package of shares at a set price.投资者可以赎回固定价格的股票女团。

2. you will need to apply three coats of varnish.须要刷三层清漆。

3. the right thing would be to apply direct pressure to the wound.恰当的作法就是轻易握住伤口。

4. priority will be given to those who apply early.晚申请者将荣获优先考量。

数据分析工具R语言的高级使用方法

数据分析工具R语言的高级使用方法

数据分析工具R语言的高级使用方法数据分析是当今社会中非常重要的一项技能,而对于数据科学家和数据分析师来说,熟练掌握数据分析工具R语言的高级使用方法是必不可少的。

本文将介绍R语言中一些常用且功能强大的高级使用方法,帮助读者更好地利用R语言进行数据分析。

一、函数式编程R语言是一种函数式编程语言,函数是R语言中的核心概念之一。

函数式编程的一个重要特点是函数的复用,通过将常用的功能封装成函数,可以提高代码的可读性和重用性。

在R语言中,可以使用自定义函数和匿名函数。

自定义函数是使用"function"关键字定义的函数,可以接受输入参数和返回结果。

例如,我们可以定义一个计算平均值的函数:```get_average <- function(x) {mean(x)}```匿名函数则是没有函数名的函数,通常用于对某个数据集进行快速操作,常与函数式编程中的apply类函数结合使用。

例如,我们可以使用匿名函数对一个向量中的每个元素进行平方操作:```squared <- sapply(1:10, function(x) x^2)```二、向量化操作在R语言中,向量是一种常见的数据结构,可以包含多个元素。

与其他编程语言不同的是,在R语言中进行向量化操作可以大大提高代码的效率。

R语言提供了许多有用的向量化函数,如"apply"、"sapply"、"lapply"等,可以对向量进行快速操作。

例如,我们可以使用"apply"函数对矩阵的每一行进行求和操作:```matrix <- matrix(1:10, nrow = 2)row_sums <- apply(matrix, 1, sum)```除了使用内置的向量化函数,还可以使用R语言中的"Vectorize"函数将一个普通函数转换为向量化函数。

R语言学习——番外apply系列函数的用法

R语言学习——番外apply系列函数的用法

R语⾔学习——番外apply系列函数的⽤法本部分内容包括:1、apply系列函数作⽤2、apply函数家族成员及其各⾃功能(8个函数,共分4组)3、具体⽤法⼀、apply家族函数的作⽤,避免使⽤循环,R中循环的效率很低,⾮常耗时,使⽤apply家族函数可以避免循环⼆、apply家族成员(⼀)进⾏分组计算——tapply()和apply()1、tapply()函数:(1)⽤途:对因⼦分组后的数据中每⼀组数据应⽤统⼀的函数进⾏计算,输出各组数据的批量计算结果。

可以实现多因⼦分组的计算,但是只能处理⼀个变量,不能多变量同时处理。

(2)选项参数:tapply(X, INDEX, FUN = NULL, ..., default = NA, simplify = TRUE)x:输⼊选项,要求是具有split因⼦分组的数据对象,只⽀持单因⼦变量,即向量INDEX:输⼊选项,可以是⼀个因⼦(向量)或⼀组因⼦(list列表),作为x对象中数据的分组依据,多个分组因⼦,如有2个因⼦,则以⼆维表格的矩阵形式输出结果,如有3个及以上,则以列表形式输出FUN:⽤于设置所⽤的函数函数,即实际⽤于计算的公式,其参数值可以是已命名的函数,如sum(求和),mean(求均值),length(计数)等,也可以是匿名函数匿名函数⽤法为:function(i) i+2*5default:⽤于设置缺省值,其参数值可以设置为0或NA或其他数值simplify:⽤于设置数据结果的表现形式,其参数值有TRUE和FALSE2种,T表⽰以简要形式输出结果,多以向量形式输出,F表⽰以复杂形式输出结果,多为多级列表。

(3)案例:统计全国⽔资源⼀级区不同⽔质类别湖泊的个数输⼊变量:湖泊个数分组因⼦:共2个,分别为⽔资源⼀级区和湖泊⽔质类别①从剪切板读取输⼊数据> data_t <- read.table("clipboard",header=T,sep="\t")输⼊后的数据如下:②构建INDEX因⼦,本案例共2个因⼦,分别是⽔资源⼀级区和⽔质类别> wrr1 <- factor(data_t$⽔资源⼀级区,levels=c("松花江区","辽河区","海河区","黄河区","淮河区","长江区","东南诸河区","珠江区","西南诸河区","西北诸河区"))> wql <- factor(data_t$⽔质类别)> wrr1[1] 松花江区松花江区松花江区松花江区松花江区松花江区松花江区松花江区辽河区[10] 松花江区松花江区海河区海河区海河区海河区海河区海河区海河区[19] 海河区海河区海河区海河区海河区海河区海河区海河区海河区[28] 海河区海河区海河区海河区海河区海河区黄河区西北诸河区西北诸河区[37] 黄河区西北诸河区西北诸河区西北诸河区黄河区西北诸河区西北诸河区黄河区西北诸河区 [46] 西北诸河区黄河区黄河区西北诸河区西北诸河区西北诸河区黄河区黄河区黄河区[55] 西北诸河区西北诸河区黄河区西北诸河区西北诸河区黄河区西北诸河区西北诸河区黄河区 [64] 黄河区黄河区淮河区淮河区淮河区淮河区淮河区淮河区淮河区[73] 淮河区淮河区淮河区淮河区淮河区淮河区淮河区淮河区淮河区[82] 淮河区淮河区淮河区淮河区淮河区淮河区淮河区淮河区淮河区[91] 淮河区淮河区淮河区淮河区淮河区淮河区淮河区东南诸河区长江区[100] 长江区长江区长江区长江区东南诸河区长江区长江区东南诸河区东南诸河区[109] 长江区东南诸河区长江区东南诸河区东南诸河区长江区东南诸河区长江区长江区[118] 长江区长江区长江区长江区东南诸河区长江区东南诸河区长江区长江区[127] 东南诸河区长江区长江区长江区长江区长江区长江区长江区长江区[136] 长江区长江区长江区长江区东南诸河区长江区长江区长江区长江区[145] 长江区长江区长江区长江区长江区西北诸河区长江区长江区西南诸河区[154] 长江区长江区长江区长江区长江区长江区长江区长江区长江区[163] 长江区长江区长江区西南诸河区长江区长江区长江区长江区长江区[172] 长江区长江区长江区长江区西南诸河区长江区长江区长江区长江区[181] 长江区西南诸河区长江区长江区长江区长江区长江区长江区长江区[190] 长江区长江区长江区长江区长江区长江区长江区长江区长江区[199] 长江区长江区长江区长江区长江区长江区西北诸河区长江区长江区[208] 长江区长江区长江区长江区西南诸河区长江区长江区西南诸河区长江区[217] 长江区长江区长江区长江区长江区长江区长江区长江区长江区[226] 长江区长江区长江区长江区长江区长江区长江区长江区长江区[235] 长江区长江区长江区长江区长江区长江区长江区长江区长江区[244] 西南诸河区长江区长江区长江区长江区长江区长江区长江区长江区[253] 珠江区珠江区珠江区珠江区珠江区珠江区珠江区珠江区珠江区[262] 珠江区珠江区珠江区珠江区长江区长江区长江区长江区长江区[271] 长江区长江区长江区长江区长江区西北诸河区Levels: 松花江区辽河区海河区黄河区淮河区长江区东南诸河区珠江区西南诸河区西北诸河区> wql[1] Ⅴ劣Ⅴ劣Ⅴ劣Ⅴ劣Ⅴ劣Ⅴ劣ⅤⅤ劣ⅤⅢⅡⅢⅤⅡⅢⅢⅣⅡⅡⅣⅣⅢ劣ⅤⅡⅣⅣ[27] ⅣⅡⅡⅡⅢⅡⅢⅡ劣Ⅴ劣ⅤⅣⅢ劣Ⅴ劣ⅤⅢⅡ劣ⅤⅡⅡⅡⅣ劣Ⅴ劣ⅤⅠⅡⅡ[53] Ⅳ劣ⅤⅡⅠⅣⅠⅢ劣Ⅴ劣Ⅴ劣Ⅴ劣ⅤⅣⅡⅤⅣⅢⅣⅣⅣⅣⅣⅣⅤⅣⅣⅣ[79] ⅣⅤⅢⅣⅣⅢⅣⅣⅤⅤⅣⅣ劣ⅤⅣⅤⅤⅤ劣ⅤⅣⅣⅤ劣ⅤⅣⅤ劣ⅤⅢ[105] ⅣⅤⅤⅡⅣⅣⅤⅤⅢⅤⅡⅤⅤⅤⅤⅤ劣ⅤⅢⅣⅡⅤⅢⅡ劣ⅤⅣⅣ[131] ⅣⅣⅣⅤⅤⅤⅤⅣ劣ⅤⅢⅤⅤⅤⅤ劣ⅤⅣⅣⅤⅤⅡⅢⅤⅣⅣⅢⅢ[157] Ⅳ劣ⅤⅢⅤⅤ劣ⅤⅢⅢⅤⅠⅣⅣ劣ⅤⅤⅤⅡⅤⅤⅢⅢⅣⅣⅤⅢⅢⅠ[183] ⅣⅣⅤⅤⅤⅣⅣⅤⅢⅣⅤⅤⅢⅠⅣⅢⅢ劣ⅤⅤ劣ⅤⅤⅣ劣ⅤⅤ劣ⅤⅤ[209] 劣ⅤⅣⅤ劣ⅤⅣⅣⅡⅡⅤⅡⅡⅢ劣ⅤⅤ劣Ⅴ劣ⅤⅣⅣⅡⅣⅣⅣⅢⅤ劣ⅤⅤ[235] ⅢⅤⅢⅢⅤⅣⅤⅤⅢ劣ⅤⅢ劣ⅤⅢⅣⅤⅤⅣⅣⅤⅡⅡ劣ⅤⅡ劣ⅤⅣⅢ[261] Ⅱ劣ⅤⅣ劣ⅤⅣⅤ劣ⅤⅢ劣ⅤⅣ劣Ⅴ劣ⅤⅤⅢⅤ劣ⅤLevels: ⅠⅡⅢⅣⅤ劣Ⅴ③采⽤tapply()函数进⾏统计,统计的函数选择“length”计数函数,将缺失值设置为0 > result <- tapply(data$湖泊名称,list(wrr1,wql),FUN=length,default=0)> resultⅠⅡⅢⅣⅤ劣Ⅴ松花江区 0 1 1 0 2 6辽河区 0 0 0 0 0 1海河区 0 8 6 6 1 1黄河区 0 4 1 5 0 4淮河区 0 0 3 19 8 2长江区 1 5 24 38 54 22东南诸河区 0 4 4 2 2 0珠江区 0 4 1 3 1 4西南诸河区 2 1 1 1 0 2西北诸河区 3 6 2 0 0 10④计算求和项,得到最终结果表 > result <- cbind("合计"=rowSums(result),result)> result合计ⅠⅡⅢⅣⅤ劣Ⅴ松花江区 10 0 1 1 0 2 6辽河区 1 0 0 0 0 0 1海河区 22 0 8 6 6 1 1黄河区 14 0 4 1 5 0 4淮河区 32 0 0 3 19 8 2长江区 144 1 5 24 38 54 22东南诸河区 12 0 4 4 2 2 0珠江区 13 0 4 1 3 1 4西南诸河区 7 2 1 1 1 0 2西北诸河区 21 3 6 2 0 0 10> result <- rbind(result,"全国"=colSums(result))> result合计ⅠⅡⅢⅣⅤ劣Ⅴ松花江区 10 0 1 1 0 2 6辽河区 1 0 0 0 0 0 1海河区 22 0 8 6 6 1 1黄河区 14 0 4 1 5 0 4淮河区 32 0 0 3 19 8 2长江区 144 1 5 24 38 54 22东南诸河区 12 0 4 4 2 2 0珠江区 13 0 4 1 3 1 4西南诸河区 7 2 1 1 1 0 2西北诸河区 21 3 6 2 0 0 10全国 276 6 33 43 74 68 522、apply()函数:(1)⽤途:对矩阵的不同维度进⾏批量计算处理。

pythonpandas自定义函数之apply函数用法

pythonpandas自定义函数之apply函数用法

pythonpandas⾃定义函数之apply函数⽤法python pandas⾃定义函数pandas是数据分析的利器,它内置许多的函数,我之前的⼀篇博客对pandas的⼀些常⽤函数都做了介绍,但是很多时候光是他本⾝⾃带的函数可能还不够⽤,所以这⾥介绍⼀下pandas数据类型DataFrame的⼀个⽅法,可以让我们的⾃定义函数运⽤在上⾯。

下⾯看⼀段代码import pandas as pdimport osdef f(column):print(type(column))df=pd.DataFrame({'column1':[1,2,5,8,63],'column2':[5,6,85,3,5],'column3':[54,36,45,85,69]},index=['fs','fd','f','fa','df'])print(df)df.apply(f)这段代码的输出结果如下:上述代码我们定义了⼀个函数f,通过apply运⽤在我们创建的dataframe数据类型上,这⾥你其实可以发现,f中需要传递⼀个参数,其实这⾥你可以发现,dataframe为f传递了三个参数,分别是三个Series对象,其实啊!这⾥默认传递列参数,然后我们就可以通过这个⽅法使⽤⾃定义函数对列进⾏操作。

下⾯再看⼀段有趣的事例代码:import pandas as pdimport osimport numpy as npdf=pd.DataFrame({'column1':[1,2,5,8,63],'column2':[5,6,85,3,5],'column3':[54,36,45,85,69]},index=['fs','fd','f','fa','df'],dtype=np.object)print(df)def f2(x):x[3]="hello ,good boy"x[2]='hello ,good girl'df.apply(f2)print(df)os.system("pause")结果如下:你会发现这样的修改结果,通过这个案例,或许你可以意识到⾃定义函数的好处。

R语言:常用函数(更新版)

R语言:常用函数(更新版)

数据结构一、数据管理vector:向量numeric:数值型向量logical:逻辑型向量character;字符型向量list:列表data.frame:数据框c:连接为向量或列表length:求长度subset:求子集seq,from:to,sequence:等差序列rep:重复NA:缺失值NULL:空对象sort,order,unique,rev:排序unlist:展平列表attr,attributes:对象属性mode,typeof:对象存储模式与类型names:对象的名字属性二、字符串处理character:字符型向量nchar:字符数substr:取子串format,format C:把对象用格式转换为字符串paste,strsplit:连接或拆分charmatch,pmatch:字符串匹配grep,sub,gsub:模式匹配与替换三、复数complex,Re,Im,Mod,Arg,Conj:复数函数四、因子factor:因子codes:因子的编码levels:因子的各水平的名字nlevels:因子的水平个数cut:把数值型对象分区间转换为因子table:交叉频数表split:按因子分组aggregate:计算各数据子集的概括统计量tapply:对“不规则”数组应用函数数学相关计算一、计算+, -, *, /, ^, %%, %/%:四则运算ceiling,floor,round,signif,trunc,zapsmall:舍入max,min,pmax,pmin:最大最小值range:最大值和最小值sum,prod:向量元素和积cumsum,cumprod,cummax,cummin:累加、累乘sort:排序approx和approx fun:插值diff:差分sign:符号函数二、数学函数abs,sqrt:绝对值,平方根log, exp, log10, log2:对数与指数函数sin,cos,tan,asin,acos,atan,atan2:三角函数sinh,cosh,tanh,asinh,acosh,atanh:双曲函数beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数fft,mvfft,convolve:富利叶变换及卷积polyroot:多项式求根poly:正交多项式spline,splinefun:样条差值besselI,besselK,besselJ,besselY,gammaCody:Bessel函数deriv:简单表达式的符号微分或算法微分三、数组array:建立数组matrix:生成矩阵data.matrix:把数据框转换为数值型矩阵lower.tri:矩阵的下三角部分mat.or.vec:生成矩阵或向量t:矩阵转置cbind:把列合并为矩阵rbind:把行合并为矩阵diag:矩阵对角元素向量或生成对角矩阵aperm:数组转置nrow, ncol:计算数组的行数和列数dim:对象的维向量dimnames:对象的维名row/colnames:行名或列名%*%:矩阵乘法crossprod:矩阵交叉乘积(内积)outer:数组外积kronecker:数组的Kronecker积apply:对数组的某些维应用函数tapply:对“不规则”数组应用函数sweep:计算数组的概括统计量aggregate:计算数据子集的概括统计量scale:矩阵标准化matplot:对矩阵各列绘图cor:相关阵或协差阵Contrast:对照矩阵row:矩阵的行下标集col:求列下标集四、线性代数solve:解线性方程组或求逆eigen:矩阵的特征值分解svd:矩阵的奇异值分解backsolve:解上三角或下三角方程组chol:Choleski分解qr:矩阵的QR分解chol2inv:由Choleski分解求逆五、逻辑运算<,>,<=,>=,==,!=:比较运算符!,&,&&,|,||,xor():逻辑运算符logical:生成逻辑向量all,any:逻辑向量都为真或存在真ifelse():二者择一match,%in%:查找unique:找出互不相同的元素which:找到真值下标集合duplicated:找到重复元素六、优化及求根optimize,uniroot,polyroot:一维优化与求根程序设计一、控制结构if,else,ifelse,switch:分支for,while,repeat,break,next:循环apply,lapply,sapply,tapply,sweep:替代循环的函数。

r语言apply函数

r语言apply函数

r语言apply函数R语言是一种多功能的编程语言,它拥有许多强大的函数,可以帮助用户解决复杂的数据问题。

其中,apply函数是R语言中非常常见的函数,它可以用来对数据矩阵或数据框中的元素(数据行或数据列)进行处理,极大地提高了我们编程进行数据分析的效率。

首先了解apply函数,我们必须明白它的基本原理。

apply函数的基本方法是,action函数将一个函数作用于数据矩阵或数据框的每一行或每一列上。

它的入口值是一个函数和一个矩阵或数据框,其中函数会被对矩阵或数据框中的每一行或每一列进行运算,然后输出一个结果矩阵或数据框。

一般而言,apply函数会按行(margin=1)或列(margin=2)进行操作,其中apply函数在每一行或每一列上运行的函数可以是由用户自己定义的,也可以是R语言自带的内置函数。

接下来,我们来看看apply函数的使用。

其实非常简单,只要使用apply函数时,按照规定的格式输入参数即可。

下面是一个具体的例子,假设我们有一个5×5的矩阵A,现在我们想要统计矩阵A每一行的和,那么我们可以用apply函数来实现这一功能:A <- matrix(1:25, nrow=5)apply(A, 1, sum)结果为:[1] 15 40 65 90 115从上面的例子可以看出,apply函数可以帮助我们快速地对数据矩阵的行或列进行处理,而无需进行大量的循环处理。

由此可见,apply函数确实是一个实用的工具,我们可以使用它来实现很多类型的复杂数据处理操作。

除了上面介绍的apply函数,R语言还拥有另外一些有用的函数,如lapply函数,sapply函数,mapply函数等。

lapply函数经常用来对列表中每个元素进行操作,sapply函数则用来简化apply函数的使用,通常不需要显式地指定结果的类型。

mapply函数则结合了lapply函数和sapply函数优点,它可以同时对两个列表中的元素进行操作。

apply函数族入门

apply函数族入门

apply函数族入门在任何一个R语言问答网站或者论坛,你都能看见这样的问题:[code]Q:如何用循环做【...各种奇怪的事情...】A:不用用循环哦,亲!apply函数可以解决这个问题哦,亲![/code]那么,这个神奇的apply函数到底是神马呢?下面通过一些简单的操作示范给各位看官。

打开R,敲入??apply函数,选定base包部分你会看到下面的东西:[code]base::apply Apply Functions Over Array Marginsbase::by Apply a Function to a Data Frame Split by Factors base::eapply Apply a Function Over Values in an Environment base::lapply Apply a Function over a List or Vectorbase::mapply Apply a Function to Multiple List or Vector Argumentsbase::rapply Recursively Apply a Function to a Listbase::tapply Apply a Function Over a Ragged Array[/code]下面一一示范。

1.apply先看看帮助文档中对其的描述:[code]“Returns a vector or array or list of values obtained by applying a function to margins of an array or matrix. ”[/code]好吧,vector、array和function是神马我都明白,margins是神马东东?简单来说,margins为1时是指行,margins为2时是指列,如果是c(1:2),好吧,这个啰嗦的举动,指的是整个array或者matrix。

R语言学习系列09-自定义函数与apply函数族

R语言学习系列09-自定义函数与apply函数族

09. 自定义函数与apply函数族一、自定义函数1.R语言中,自定义函数的基本格式为:myfun<-function(arglist){statementsreturn(object)}其中,myfun为函数名称;arglist为参数列表;大括号中的部分为函数体。

函数体通常包含三部分:(1)异常处理输入的数据不能满足函数计算的要求,或者类型不符,应设计异常处理机制提示哪个地方出现错误;(2)内部处理过程包括具体的内部处理步骤,与该函数要完成的功能有关;(3)返回值用函数return()给出,返回对象的类型是任意的;函数在内部处理过程中,一旦遇到return()就会终止运行函数体,将return()内的数据作为函数处理的结果返回。

2. 自定义函数及调用实例操作下面自定义函数计算标准差:(1)先在RStudio的代码编辑窗口编写函数,并保存为E:\办公资料\R语言\R语言学习系列\codes\std2.R##计算标准差std2<-function(x){#异常处理if(!is.numeric(x)){stop("the input data must be numeric! \n")}if(length(x)==1){stop("can not compute std for one number,a numeric vector required. \n")}result<-sqrt(sum((x-mean(x))^2)/(length(x)-1))return(result)}(2)调用std2.R要调用创建好的函数,在命令控制台窗口,先使用source("std2.R",encoding="utf-8")注意改到当前路径;若不加encoding="utf-8"将弹出警告信息。

R语言——精选推荐

R语言——精选推荐

R语⾔快捷键:1. Ctrl + Shift + F10 to restart your R session2. Ctrl +O:打开⽂件3. Ctrl + Shift+C :加标记#4. Ctrl + Shift+N :创建新⽂本簿1.r语⾔中= ,<-功能是相同,有时候=会出错,所以⽤<-。

但是从字⾯上解释,通常“<-”被认为是赋值,”=”是传值。

2.在函数调⽤中,func(x=1)与func(x<-1)是有区别的,前者调⽤完后变量x不会被保留,⽽后者会在⼯作区⾥保留变量x=1。

3.初始化:初始化3.1使⽤data.frame函数就可以初始化⼀个Data Frame。

⽐如我们要初始化⼀个student的Data Frame其中包含ID和Name还有Gender以及Birthdate,那么代码为:student<-data.frame(ID=c(11,12,13),Name=c(“Devin”,”Edward”,”Wenli”),Gender=c(“M”,”M”,”F”),Birthdate=c(“1984-12-29”,”1983-5-6”,”1986-8-8”))3.2另外也可以使⽤read.table() read.csv()读取⼀个⽂本⽂件,返回的也是⼀个Data Frame对象。

读取数据库也是返回Data Frame对象。

查看student的内容为:4.数据标准化:scale(data, center=T,scale=T) #数据标准化1)center和scale默认为真,即T或者TRUE2)center为真表⽰数据中⼼化3)scale为真表⽰数据标准化 读取数据:library(xlsx)ray = read.xlsx('F:/R编辑器/student.xlsx',1,encoding="UTF-8")⽂件中含有中⽂,必须加上:encoding="UTF-8"。

R语言apply函数家族详解

R语言apply函数家族详解

R语言apply函数家族详解apply {base}通过对数组或者矩阵的一个维度使用函数生成值得列表或者数组、向量。

apply(X, MARGIN, FUN, ...)X 阵列,包括矩阵MARGIN 1表示矩阵行,2表示矩阵列,也可以是c(1,2)例:>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 20lapply {base}通过对x的每一个元素运用函数,生成一个与元素个数相同的值列表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] 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.5sapply {base}这是一个用户友好版本,是lapply函数的包装版。

该函数返回值为向量、矩阵,如果simplify=”array”,且合适的情况下,将会通过simplify2array()函数转换为阵列。

R语言利器:apply、lapply和sapply

R语言利器:apply、lapply和sapply

R语言利器:apply、lapply和sapply大神一句话,菜鸟跑半年。

我不是大神,但我可以缩短你走弯路的半年~就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!从极简例子开始,认识几个批处理的函数。

1.apply处理矩阵或数据框,对每行/列实施相同的操作usage: apply(X, MARGIN, FUN, …)其中X是数据框/矩阵名;MARGIN为1表示取行,为2表示取列,fun是函数(test<->1:4,1:4])## Sepal.Length Sepal.Width Petal.Length Petal.Width##1 5.1 3.5 1.4 0.2##2 4.9 3.0 1.4 0.2##3 4.7 3.2 1.3 0.2##4 4.6 3.1 1.5 0.2apply(test, 2, mean)## Sepal.Length Sepal.Width Petal.Length Petal.Width ## 4.825 3.200 1.400 0.200apply(test, 1, sum)## 1 2 3 4 ## 10.2 9.5 9.4 9.4pply处理列表,对列表中的每个元素(向量)实施相同的操作usage:lapply(list, FUN, …)price <- list(year2016="">36:33, year2017 =32:35, year2018 = 30:27)#返回的是列表,对列表中的每个元素(向量)求均值(试试方差var,分位数quantile)lapply(price,mean)## $year2016## [1] 34.5## ## $year2017## [1] 33.5## ## $year2018## [1] 28.5unlist(lapply(price,mean))## year2016 year2017 year2018 ## 34.5 33.5 28.5 3.sapplysapply(X, FUN, …) 注意和lapply的联系和区别也是处理列表,但返回值是向量或矩阵lapply(price,min)## $year2016## [1] 33## ## $year2017## [1] 32## ## $year2018## [1] 27sapply(price,min)## year2016 year2017 year2018 ## 33 32 27lapply(price,quantile)## $year2016## 0% 25% 50% 75% 100% ## 33.00 33.75 34.50 35.25 36.00 ## ## $year2017## 0% 25% 50% 75% 100% ## 32.00 32.75 33.50 34.25 35.00 ## ## $year2018## 0% 25% 50% 75% 100% ## 27.00 27.75 28.50 29.25 30.00sapply(price,quantile)## year2016 year2017 year2018## 0% 33.00 32.00 27.00## 25% 33.75 32.75 27.75## 50% 34.50 33.50 28.50## 75% 35.25 34.25 29.25## 100% 36.00 35.00 30.00隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

09. 自定义函数与apply函数族
一、自定义函数
1.R语言中,自定义函数的基本格式为:
myfun<-function(arglist){
statements
return(object)
}
其中,myfun为函数名称;arglist为参数列表;大括号中的部分为函数体。

函数体通常包含三部分:
(1)异常处理
输入的数据不能满足函数计算的要求,或者类型不符,应设计异常处理机制提示哪个地方出现错误;
(2)内部处理过程
包括具体的内部处理步骤,与该函数要完成的功能有关;
(3)返回值
用函数return()给出,返回对象的类型是任意的;函数在内部处理过程中,一旦遇到return()就会终止运行函数体,将return()内的数据作为函数处理的结果返回。

2. 自定义函数及调用实例操作
下面自定义函数计算标准差:
(1)先在RStudio的代码编辑窗口编写函数,并保存为
E:\办公资料\R语言\R语言学习系列\codes\std2.R
##计算标准差
std2<-function(x)
{
#异常处理
if(!is.numeric(x)){
stop("the input data must be numeric! \n")
}
if(length(x)==1){
stop("can not compute std for one number,
a numeric vector required. \n")
}
result<-sqrt(sum((x-mean(x))^2)/(length(x)-1))
return(result)
}
(2)调用std2.R
要调用创建好的函数,在命令控制台窗口,先使用
source("std2.R",encoding="utf-8")
注意改到当前路径;若不加encoding="utf-8"将弹出警告信息。

再调用函数即可。

>setwd("E:/办公资料/R语言/R语言学习系列/codes")
>source("std2.R",encoding="utf-8")
> std2(c(2,6,4,9,12))
[1] 3.974921
> std2(3) #输入数据为1个数值,异常处理机制报错
Error in std2(3) : can not compute std for one number,
a numeric vector required.
> std2(c("1","2")) #输入数据不是数值型,异常处理机制报错
Error in std2(c("1", "2")) : the input data must be num eric!
或者创建并运行脚本文件:(选中代码,点run按钮)
二、apply函数族
R语言中,利用apply族函数可将某函数作用到一系列数据对象上,包括标量、向量、矩阵、多维数组、数据框、列表。

1. 函数apply()
对数据对象的一个维度,都作用上某函数,生成列表、多维数组或向量。

基本格式为:
apply(x, MARGIN=..., fun, ...)
其中,x为数据对象(矩阵、多维数组、数据框);MARGIN=1表示按行,2表示按列;fun表示要作用的函数。

>x<-matrix(1:6,ncol=2)
>x
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
>apply(x,1,mean) #按行求均值
[1] 2.5 3.5 4.5
>apply(x,2,mean) #按列求均值
[1] 2 5
2. 函数lapply()
对数据对象的每一个元素,都作用上某函数,生成一个与元素个数相同的值列表。

基本格式为:
lapply(x, fun, ...)
其中,x为数据对象(列表、数据框、向量)。

>x<-list(a=1:5,b=exp(0:3))
>x
$a
[1] 1 2 3 4 5
$b
[1] 1.000000 2.718282 7.389056 20.085537
>lapply(x,mean)
$a
[1] 3
$b
[1] 7.798219
3. 函数sapply()
基本格式为:
lapply(x, fun, ..., simplify=TRUE, S=...)
比函数lapply()多了一个参数simplify,若simplify=FALSE,则同lapply();若为TRUE,则将输出的list简化为向量或矩阵;若S为TRUE,且x为字符型,则用x作为结果的名称。

>sapply(x, mean, simplify = TRUE) #x同上例
a b
3.000000 7.798219
>list<-list(c("a","b","c"),c("A","B","C"))
>list
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "A" "B" "C"
#将列表list中的元素与数字1~3连接
>sapply(list,paste, 1:3, simplify = TRUE)
[,1] [,2]
[1,] "a 1" "A 1"
[2,] "b 2" "B 2"
[3,] "c 3" "C 3"
>sapply(list,paste, 1:3, simplify = FALSE)
[[1]]
[1] "a 1" "b 2" "c 3"
[[2]]
[1] "A 1" "B 2" "C 3"
4. 函数tapply()
对不规则阵列,对照一组确定因子作用某函数。

基本格式为:tapply(x, INDEX, fun, ..., simplify=TRUE)
其中,x通常为向量;INDEX为与x长度相同的因子列表(若不是因子,R会强制转化为因子);simplify=TRUE且fun计算结果为标量值,则返回值为数组,若为FALSE,则返回值为list对象。

>height<-c(174,165,180,171,160)
>sex<-c("F","F","M","M","F")
>tapply(height,sex,mean) #计算不同sex对应的height的均值
F M
166.3333 175.5000
5. 函数mapply()
是函数sapply()的多变量版本,将对多个变量的每个参数作用某函数。

基本格式为:
mapply(fun, MoreArgs=NULL, SIMPLIFY=TRUE, S=TRUE)其中,MoreArgs为fun函数的其它参数列表;SIMPLIFY为逻辑值或字符串,取值为TRUR时,将结果转化为一个向量、矩阵或高维阵
列(但不是所有结果都可转化)。

>#重复生成列表list(x=1:2), 重复次数times=1:3,结果为列表
>mapply(rep, times=1:3, MoreArgs = list(x=1:2))
[[1]]
[1] 1 2
[[2]]
[1] 1 2 1 2
[[3]]
[1] 1 2 1 2 1 2
>#重复生成列表list(x=1:2), 重复次数times=c(2,2),结果为矩阵>mapply(rep, times=c(2,2), MoreArgs = list(x=1:2))
[,1] [,2]
[1,] 1 1
[2,] 2 2
[3,] 1 1
[4,] 2 2
主要参考文献:
[1]张良均,谢佳标,杨坦,肖刚. R语言与数据挖掘. 机械工业出版
社,2016.。

相关文档
最新文档