[技巧]我的灭霸函数
今天是生信星球陪你的第234天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
突然爆发,写了好多函数,但是当对象也多,函数也多的时候,还是慢。我那么懒,我会一个个打吗?不会!想办法!
1.不限数量的输入x
之前写过一个dumd,作用是数据框去重复.
dumd <- function(x){
colname <- vector("character")
count <- vector("integer")
for(i in 1:ncol(x)){
colname[i] = colnames(x)[[i]]
count[i]=nrow(x[!duplicated(x[,i]),])
}
但我想实现两个三个数据框同时去重复,返回列表给我就行。
思路很简单,弄一个循环就可以啦,可是做起来就发现没那么简单,当你用到变量名的时候,往往发现带着双引号!没法用。于是豆豆帮我查到了一个至关重要的函数叫noquote!就这么愉快解决了。
multidumd <- function(...){
input <- list(...)
output <- list()
for (i in 1:length(input)){
output[[i]] <- dumd(noquote((input)[[i]]))
}
output
}
突然想起,R数据科学里讲过换函数的操作,就是“…”,也就是说不光dumd这个函数,其他函数也可以走起啦!
2.自定义函数
thanos <- function(...,fun){
input <- list(...)
output <- list()
for (i in 1:length(input)){
output[[i]] <- fun(noquote((input)[[i]]))
}
output
}
所以任意数量的输入,加上指定函数,这个技巧很6了!当然这个fun需要只有一个输入,df或者x。
报错什么的先不管,就这样先用起来,开心~~~取个名字叫灭霸。
隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)
国内看B站,教学视频链接:https://m.bilibili.com/space/338686099
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists友情链接:
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到Bioplanet520@outlook.com,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!