#mapply(函数/函数名,数据,函数相关的函数) > list(rep(1,4),rep(2,3),rep(3,2),rep(4,1)) [[1]] [1] 1 1 1 1 [[2]] [1] 2 2 2 [[3]] [1] 3 3 [[4]] [1] 4 > mapply(rep,1:4,4:1) [[1]] [1] 1 1 1 1 [[2]] [1] 2 2 2 [[3]] [1 1.41372263 -0.06111607 -0.79670515 [[5]] [1] 0.7191012 -0.1381517 1.6261461 0.8744692 3.0874750 > mapply
apply: Apply a function over the margins of an array tapply: Apply a function over subsets of a vector mapply rows of a matrix. > x <- matrix(rnorm(200), 20, 10) > apply(x, 1, quantile, probs = c(0.25, 0.75)) mapply mapply is a multivariate apply of sorts which applies a function in parallel over a set of arguments . > str(mapply) function (FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,USE.NAMES = TRUE) FUN is a function noise(1:5, 1:5, 2) [1] -4.2128648 -0.3989266 4.2507057 1.1572738 [5] 3.7413584 Instant Vectorization > mapply
除了sapply()、mapply()等变体之外,我们还提供了一把用于数据处理的多用途"瑞士军刀"。 现在,我们来看看apply()函数家族中的最后一个函数——mapply()函数。 mapply() mapply()代表multivariable apply,基本上是sapply()的multivariable版本。 在这种情况下,我们使用mapply()函数: mapply(function(num1, num2) max(c(num1, num2)), list1, list2) ? 我们还可以使用mapply()函数创建一个显示花瓣长度和花瓣宽度之和的新列: iris_df['Sum_Petal'] <- mapply(function(x, y) x+y, iris_df$Petal.Length
apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。 apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。 4.mapply函数 mapply函数主要是对多个列表或者向量参数使用函数. ? 总结以上函数应用可以减少在R语言中的For循环,从而提升R语言效率。 欢迎各位学习交流
05 mapply() mapply(FUN,MoreArgs=NULL,SIMPLIFY=TRUE,USE.NAMES=TRUE) SIMPLIFY表示逻辑词,SIMPLIFY=TRUE时,能够把结果转变为向量 #使用mapply函数重复生成列表list(x=3:6),重复次数times=1:4,而且生成的结果是列表。 ? #使用mapply函数重复生成列表list(x=3:6),重复次数times=1:4,而且生成的结果是矩阵。 ?
vapply(x, FUN = length, FUN.VALUE = 0L) #mapply #Sums the 1st elements, the 2nd elements, etc. mapply(sum, 1:5, 1:5, 1:5) [1] 3 6 9 12 15 #To do rep(1,4), rep(2,3), etc. mapply(rep, 1:4, 4:1) #Map #A wrapper to mapply with SIMPLIFY = FALSE, so it is guaranteed to return a list.
., all.names = FALSE, USE.NAMES = TRUE) mapply Apply a Function to Multiple List or Vector Arguments对多个列表或者向量参数使用函数 mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE) rapply Recursively Apply a Function 函数mapply是函数sapply的变形版,mapply 将函数 FUN 依次应用每一个参数的第一个元素、第二个元素、第三个元素上。 函数mapply的使用格式如下: mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,USE.NAMES = TRUE) 其中参数MoreArgs表示函数 > mapply(rep, times=1:4, x=4:1) [[1]] [1] 4 [[2]] [1] 3 3 [[3]] [1] 2 2 2 [[4]] [1] 1 1 1 1 #直接使用函数
R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等。这几个函数功能有些类似,下面介绍下这几个函数的用法。 Mapply 这是对多个数据(multivariate)进行sapply处理,只是调用是参数位置有所变化,先把函数放前面: mapply(运算函数,函数的参数,第一个传入参数,第二个数据…,SIMPLIFY : a<-1:5 b<-2:6 c<-5:1 现在我们要求a,b,c中的对应各位数进行m3函数的运算,也就是把a,b,c的第一个数做运算,然后把a,b,c的第二个数做运算,然后第三个数~~~这时候就用mapply 很方便: mapply(m3,a,b,c) [1] 10 24 36 40 30 OK,就这么简单,实现了对应的各位元素的运算。
rndSeq <- function(dict, n) { paste(sample(dict, n, replace = T), collapse = "") } set.seed(0) # 用mapply 和rndSeq函数获取5条序列(字符串): DNA.raw <- mapply(rndSeq,list(DNA_BASES), rep(20, 5)) names(DNA.raw) <- paste("
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的多变量版本。 mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE) MoreArgs FUN函数的其他参数列表 SIMPLIFY 逻辑或者字符串 ,可以减少结果成为一个向量、矩阵或者更高维阵列,详见sapply的simplify参数 USE.NAMES 逻辑值,如果第一个参数...已被命名,将使用这个字符向量作为名字 例: > mapply(rep
identifiers, for example library(KEGG.db) lst <- head(as.list(KEGGEXTID2PATHID)) gsc <- GeneSetCollection(mapply ]; head(rb.genes) lst=list(mt.genes=mt.genes, rb.genes=rb.genes ) gsc <- GeneSetCollection(mapply
mapply函数 mapply是sapply的变形函数,类似多变量的sapply,但是参数定义有些变化。第一参数为自定义的FUN函数,第二个参数’…’可以接收多个数据,作为FUN函数的参数调用。 mapply(max, x, y, z)[1] 10 9 8 7 8 9 10 又比如想生成4个符合正态分布的数据集,分别对应的均值和方差为c(1,10,100,1000)。 # m为均值,v为方差m <- v <- c(1, 10, 100, 1000) # 生成4组数据,按列分组mapply(rnorm, rep(4,4), m, v)[,1] [,2]
get_tri(diag = TRUE, upper.tri = TRUE) %>% reshape2::melt(na.rm = TRUE) %>% mutate( Var1 = mapply (function(x) x[2], str_split(Var1, "_") ), Var2 = mapply(function(x) x[2], str_split(Var2, "_") )
而在R当中,有一系列相关的函数,apply, lapply, sapply, tapply, mapply, sweep。我们先得了解这些函数,然后再来应用它们。最简单的是apply。 除了上面介绍的,还有tapply,mapply,sweep等。它们的定义如下。如果需要了解和掌握它们,需要熟悉上面介绍的apply, lapply, sapply以及vapply。 tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, split(ozonedf, list(ozonedf$lat, ozonedf$long))R> models <- lapply(pieces, deseasf_df)R> results <- mapply
还可以通过motifStack这个R包绘制motif的sequence logo, 用法如下 library(motifStack) pfms <- mapply(function(.ele, id)
., all.names = FALSE, USE.NAMES = TRUE) mapply 对多个列表或者向量参数使用函数 mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY
splitwords = function(x, x.len) substring(x, 1:(x.len+1 - group), group:x.len); words = mapply(splitwords
<- seq(10,120,by=10) # 控制离散度 disp <- c(5,50,200) # 模拟3组样品的数据;直接是转置后的物种丰度表 sites.a <- as.data.frame(mapply sites.b <- as.data.frame(mapply(rnbinom, n=num, size=disp[1:2], mu=mean)) rownames(sites.b) <- paste( sites.c <- as.data.frame(mapply(rnbinom, n=num, size=disp, mu=mean)) rownames(sites.c) <- paste('site.c
(all_gene_sets$gene_symbol,all_gene_sets$gs_name) gs <- lapply(gs, unique) gsc <- GeneSetCollection(mapply
duplicated, eval, evalq, Filter, Find, get, grep, ## grepl, intersect, is.unsorted, lapply, Map, mapply