mapply(
函数(x,y,epsi=0.001)
x*(max(y,na.rm=t)-min(y,na.rm=t)+2*epsi)+min(y,na.rm=t)-epsi,
W,DF)
#A B
#[1,]0.972610 1.149616
#[2,]1.103653 1.149913
#[3,]1.102190 1.146943
#[4,]0.962787 1.143676
#[5,]1.107624 1.141597
< /代码>
说明:mapply将函数应用于w和dfcolumn by column,并将结果简化为5x2matrix。
重新定义ff稍微,这可以更简洁地写为
ff<-函数(x,y,epsi=0.001)
x*(最大值(y,na.rm=t)-最小值(y,na.rm=t)+2*epsi)+最小值(y,na.rm=t)-epsi
映射(FF、W、DF)
< /代码>
或使用purr::map2_df
as
w%>%map2_df(df,ff)
##A台架:5 x 2
αA
#<dbl><dbl>
α1 0.973 0.973
α2 1.10 1.10
α3 1.10 1.10
α4 0.963 0.963
α5 1.11 1.11
< /代码>
< H2>更新< /H2>
从一个非常快速和肮脏的micronchmarkanalysis of themutate-allandmap2approaches look like this:。
res<-微基准(
MAP2= {
FF<-功能(x,y,epsi=0.001)
x*(最大值(y,na.rm=t)-最小值(y,na.rm=t)+2*epsi)+最小值(y,na.rm=t)-epsi
w%>%map2_df(df,ff)
}
突变基因ALL={
FF<-函数(x,epsi,colname){
res<-x*(最大值(df[,colname],na.rm=true)-最小值(df[,colname],na.rm=true)+
2*epsi)+min(df[,colname],na.rm=true)-epsi
返回(RES)
}
w%>%突变所有(funs(ff(,0.001,quo名称(quo(.)))
}
)
物件
#单位:微秒
#expr min lq平均中位数uq max neval
#地图2 320.537 371.1365 495.7786 397.6755 449.4445 8599.661 100
#突变所有1916.788 1998.2105 2312.5878 2059.7650 2290.1415 11169.320 100
图书馆(ggplot2)
自动绘图(RES)
< /代码>
说明:默普
将函数应用于w
和df
并将结果简化为5x2matrix
.
重新定义ff
稍微说一下,这可以更简洁地写为
ff <- function(x, y, epsi = 0.001)
x * (max(y, na.rm = T) - min(y, na.rm = T) + 2 * epsi) + min(y, na.rm = T) - epsi
mapply(ff, w, df)
或使用purrr::map2_df
作为
w %>% map2_df(df, ff)
## A tibble: 5 x 2
# A B
# <dbl> <dbl>
#1 0.973 1.15
#2 1.10 1.15
#3 1.10 1.15
#4 0.963 1.14
#5 1.11 1.14
更新
非常快速和肮脏的结果microbenchmark
分析mutate_all
和map2
方法如下:
res <- microbenchmark(
map2 = {
ff <- function(x, y, epsi = 0.001)
x * (max(y, na.rm = T) - min(y, na.rm = T) + 2 * epsi) + min(y, na.rm = T) - epsi
w %>% map2_df(df, ff)
},
mutate_all = {
ff <- function(x, epsi, colName) {
res <- x*(max(df[,colName], na.rm = TRUE) - min(df[,colName], na.rm=TRUE) +
2*epsi)+min(df[,colName], na.rm = TRUE) - epsi
return(res)
}
w %>% mutate_all(funs(ff(., 0.001, quo_name(quo(.)) )))
}
)
res
#Unit: microseconds
# expr min lq mean median uq max neval
# map2 320.537 371.1365 495.7786 397.6755 449.4445 8599.661 100
# mutate_all 1916.788 1998.2105 2312.5878 2059.7650 2290.1415 11169.320 100
library(ggplot2)
autoplot(res)