前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >104-R茶话会19-几种查看函数源代码的方法

104-R茶话会19-几种查看函数源代码的方法

作者头像
北野茶缸子
发布2022-04-05 15:16:48
6210
发布2022-04-05 15:16:48
举报
文章被收录于专栏:北野茶缸子的专栏
  • 参考:
    • 六种方法查看R函数源代码,为啥第三种最惹人喜欢?- 简书 (jianshu.com)[1]

前言

最近正好在探索[[管中窥rpca(ReciprocalProject)]] 函数以及seurat 家族里其他函数的用法,借此机会来总结一下。

1-直接查看

其实非常粗暴,比如我想知道Seurat 中的某个方法,直接去掉这个函数对应的括号和参数即可(如果加载这个包到环境中,也可以直接通过函数名获取):

代码语言:javascript
复制
> Seurat::DimHeatmap

我可以直接输出到console 中。这里就并不展示了。之前我们说过,因为有的函数作者并没有写出给用户调用,这时候如果使用的话:

代码语言:javascript
复制
> Seurat::AnnoyNN
错误: 'AnnoyNN'不是'namespace:Seurat'内的出口对象:

这时候就需要使用:::了:

代码语言:javascript
复制
> Seurat:::AnnoyNN

当然直接输出到console 太过原始,不便于我们去了解代码。

这里还可以利用sink 函数将输出的内容输出到指定的文件中,亦或是:

还可以在Rstudio 中通过F2 快捷键查看:

还可以用函数edit()。会自动调出一个编辑窗口,可以直接编辑函数并将结果赋值给新的变量,非常适合那些需要简单修改的函数:

代码语言:javascript
复制
a <- edit(Seurat::as.CellDataSet)

2-泛型函数

在R 的面向对象中还存在一类泛型函数,这里先不展开说了。它们通常是这样:

这类函数会根据对象的不同,调用不同的函数,可以通过methods 查看:

代码语言:javascript
复制
> methods(mean)
 [1] mean,ANY-method          mean,Matrix-method      
 [3] mean,sparseMatrix-method mean,sparseVector-method
 [5] mean.Date                mean.default            
 [7] mean.difftime            mean.ecdf*              
 [9] mean.ewcdf*              mean.IDate*             
[11] mean.im*                 mean.ITime*             
[13] mean.leverage.ppm*       mean.POSIXct            
[15] mean.POSIXlt             mean.quosure*           
[17] mean.vctrs_vctr*         mean.yearmon*           
[19] mean.yearqtr*            mean.zoo*               
see '?methods' for accessing help and source code

比如我们关心的是Date 对象的除了,就可以直接通过mean.Date 查看了。

但如果是*的函数呢?

代码语言:javascript
复制
> mean.leverage.ppm*
+ 
> mean.leverage.ppm
错误: 找不到对象'mean.leverage.ppm'

R 不仅不能直接识别*,也不能删除后查看。

说明它和Seurat:::AnnoyNN,是被隐藏起来的函数,我们需要通过getAnywhere(mean.leverage.ppm) 来查看,或者spatstat.core:::mean.leverage.ppm 同理。

3-网站查看

如果是github 上的包,直接查看对应的代码,如果是上传到cran 等,同样的操作:

没有什么是直接偷家搞不定的。

其他技巧

比如我会使用sink 函数来捕获函数的输出,保存在txt 文件中便捷阅读代码。

其实这里你也可以用

参考资料

[1]

六种方法查看R函数源代码,为啥第三种最惹人喜欢?- 简书 (jianshu.com): https://www.jianshu.com/p/ae68ae6c68dd

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1-直接查看
  • 2-泛型函数
  • 3-网站查看
  • 其他技巧
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档