【发布时间】:2019-05-06 14:22:14
【问题描述】:
我对 C 有很好的了解,但对 R 却知之甚少。我在 Windows7 上的 R-studio 中从源代码安装了一个 R-package (coxme),其中包括将几个 C 文件编译成一个 .dll。这个包不是独立的,它依赖于至少 2 个其他包(可能更多)。它运行得太慢了,所以我想看看是否可以通过先对其进行分析来加快速度。我使用 R 包“profvis”来分析 R 代码,但它只告诉我 98% 的时间被“coxme”包使用,而没有提供任何进一步的细节。对 R 包的调用类似于:
frail.xg=coxme(Surv(y.vec,delta.vec)~x.mat+g.vec+(1|fiid.vec),varlist=list(K.mat))
整个包没有名为coxme(...)的函数,所以我不知道我如上所示调用这个包后发生了什么。我标记了包的“src”目录中的每个函数以打印(附加)到文件中,但只有init() 函数在注册包时在安装时触发。一旦我从 R-Studio 中运行 coxme,其他功能都不会打印到该文件。除了init() 函数之外,当我调用coxme(...) 时,似乎包中的所有C 函数都没有被执行。我的做法是这样的:
remove.packages("coxme")
在 coxme“src”目录中操作 C 代码以打印到某个外部文件“我是函数 XYZ 等”。创建 coxme.tar.gz
install.packages('E:/Workdir/AOO/R/coxme/coxme.tar.gz', repos = NULL, type="source")
library("coxme")
frail.xg=coxme(Surv(y.vec,delta.vec)~x.mat+g.vec(1|fiid.vec),varlist=list(K.mat))
这会产生一些预期的结果。 但是似乎没有一个 C 函数受到影响,我的分析代码也没有。所以我的问题是:
- 究竟执行了什么?
- 我如何着手并找出 coxme 包中大部分时间消耗的内容?
【问题讨论】:
-
也许可以先回答一个更直接的问题:stackoverflow.com/help/formatting
-
coxme调用coxme.fit调用 C 函数:github.com/cran/coxme/blob/master/R/coxme.fit.R#L152 -
好的,这很有趣。谢谢!