【发布时间】:2020-06-27 13:18:25
【问题描述】:
我做了很多R,有时我需要能够跳转到给定包的函数定义。在Rstudio 中,按下Alt-click 将打开一个带有源代码的视图窗口。现在我不使用Rstudio,而是使用vim 和nvimr
我知道如何生成能够跳转到定义的标签(我是为自己的包做的),但是我无法从系统中找到包中的源文件,如/usr/lib64/R/library 甚至安装在我的自己的图书馆(我通过这样做)
install.packages("data.table", INSTALL_opts=c("--preclean --no-multiarch --no-lock --with-keep.source"))
# OR on the cmd line
R --vanilla CMD INSTALL --preclean --no-multiarch --no-lock --with-keep.source data.table
我本来希望 --with-keep.source 将源文件保留在库中,但我看不到它们
me@nyzls604m:~/R/x86_64-pc-linux-gnu-library/4.0/data.table$ ll R
total 880K
-rw-r--r-- 1 umanskyc quant 868K Jun 27 09:02 data.table.rdb
-rw-r--r-- 1 umanskyc quant 4.5K Jun 27 09:02 data.table.rdx
-rw-r--r-- 1 umanskyc quant 1.1K Jun 27 09:02 data.table
因此我的问题是:Rstudio 是做什么的,有没有办法让我获得我安装的软件包的源代码,以便我可以解析它们并从 vim 获取“跳转到定义”
【问题讨论】:
-
据我了解,这并非易事。
with-keep.source选项保留源代码中的代码格式(例如,保留代码 cmets),这样当您在控制台中打印函数的源代码时,您可以看到作者是如何编写代码的(包括他们的 cmets);它不会将 R 脚本放在R/目录中;一切仍保存在.rdb和.rdx文件中。 -
那么 Rstudio 是如何做到的呢?
-
好问题。我最好的猜测(特别是因为打开的查看器是只读的)是它会生成(只读)文件,该文件与函数定义一起显示,如果您只需在R 控制台。例如,假设您要查看
Rcpp::cppFunction()的来源。如果我在 RStudio 中按住 Ctrl 键单击,它会打开一个查看器窗格,其中包含 exact 与我在 R 控制台中键入Rcpp::cppFunction时会出现的相同信息(最后缺少一些关于命名空间的识别信息) -
nvimr 在我看来要好得多,我开发、跳转到定义、无缝地构建包。你真的应该试试。对于这个问题,你的建议让我觉得我可能已经可以做到了,我会尽快回复答案
-
@KonradRudolph 你说得对,我认为它在做一些不同的事情,但事实并非如此,我现在正在阅读 nvimr 文档以找到执行此操作的函数