相关疑难解决方法(0)

在R中编辑函数有哪些方法?

假设我们有以下功能:

foo <- function(x)
{
    line1 <- x
    line2 <- 0
    line3 <- line1 + line2
    return(line3)
}
Run Code Online (Sandbox Code Playgroud)

我们想要改变第二行:

    line2 <- 2
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

一种方法是使用

fix(foo)
Run Code Online (Sandbox Code Playgroud)

并改变功能.

另一种方法是再次编写该函数.

还有另外一种方法吗?(记住,任务是改变第二行)

我想要的是某种方式将函数表示为字符串向量(好吧,字符),然后更改其中一个值,然后再将其转换为函数.

r editing function

47
推荐指数
5
解决办法
3万
查看次数

更改包的内部功能

一些背景:

我必须经常使用HMR包中HMR的函数.不幸的是,这个功能非常慢.(HMR本质上是一个拟合函数,它被设计为尽可能健壮,这是缺乏效率的一个原因.)函数HMR调用函数HMR::.HMR.fit1,它执行实际拟合.使用Rprof我知道关于效率的主要问题是使用lsfit,这被称为很多.因此,我修改了代码.HMR.fit1lsfit直接调用直接使用的C函数而没有所有开销lsfit,这应该导致显着的速度增益.

现在我想HMR::.HMR.fit1用我修改过的函数代替并测试HMR它是否给出了相同的结果以及我获得了多少速度.

我试着这样做:

mod.fun <- function(<many args>) {
 <a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun 
Run Code Online (Sandbox Code Playgroud)

但是,HMR::.HMR.fit1这样做不会改变,显然HMR::HMR不会使用我修改过的拟合函数.有没有办法实现我想要的,而无需从源代码构建软件包,由于我的(Windows)计算机上的用户权限限制,我无法做到这一点?

现在,我的解决方案是复制代码HMR::HMR,但我希望有一个更方便的解决方案.

packages r

13
推荐指数
2
解决办法
2万
查看次数

从 Stargazer .tex 输出中删除 \begin{tabular}

有没有一种简单的方法可以自动删除

\begin{tabular}{@{\extracolsep{5pt}}lc}
Run Code Online (Sandbox Code Playgroud)

\end{tabular}
Run Code Online (Sandbox Code Playgroud)

Stargazer LaTeX 输出的开头和结尾的行?

实际上,我只需要内部的 LaTeX 代码,而从 stargazer 生成的 TeX 文件中手动删除这些行完全是浪费时间......

latex r tabular stargazer

5
推荐指数
1
解决办法
472
查看次数

标签 统计

r ×3

editing ×1

function ×1

latex ×1

packages ×1

stargazer ×1

tabular ×1