gpt4 book ai didi

r - 修改包功能

转载 作者:行者123 更新时间:2023-12-04 12:37:28 25 4
gpt4 key购买 nike

这是我第一次尝试这个,所以如果我弄错了术语,请道歉。我正在使用一个包(生物导体上的 snapCGH)。我调用了一个函数,plotSegmentedGenome,它又调用了基因组图。这两个函数都在 snapCGH 命名空间中:

> environment(plotSegmentedGenome)
<environment: namespace:snapCGH>
> environment(genomePlot)
<environment: namespace:snapCGH>

我想修改基因组图。我的第一次尝试只是简单地运行
> genomePlot

所以我可以获取代码并从中创建一个新函数。我想改变两件小事。它在 mb 中标记 x 轴,而 Id 喜欢它 bp(因此将标签相乘,但没有乘以 1000000 绘制的值)。其次,它用刺眼的红色染色体额外标记 x 轴。我想完全删除那个标签。将此尝试保存为基因组图.R 并获取它。

如果我然后运行 ​​plotSegmentedGenome 则没有任何变化。所以我认为它仍在其命名空间内使用基因组图函数。如果我在全局环境中创建自己的 plotSegmentedGenome 副本,则会收到错误“错误:找不到对象‘chrominfo.Mb’”。这是我认为是在 env 中创建的 plotSegmentedGenome 的参数之一。

我希望这是有道理的,并且有一个解决方案并不容易:)

ps:我读过这个, http://www.r-bloggers.com/environments-in-r/ ,这很有趣,但不够详细,无法让我弄清楚如何解决这个问题。要是我能写就好了
snapCGH$genomePlot <- customGenomePlot
or
snapCGH:::genomePlot <- customGenomePlot

更新:
基于 Redirect/intercept function calls within a package function

我试过
 library(proto)
plotSegmentedGenome <- with(proto(environment( plotSegmentedGenome), plotSegmentedGenome = snapCGH:: plotSegmentedGenome, genomePlot = genomePlot), my_genomePlot)

但我仍然收到错误
 Error in plotSegmentedGenome(SegInfo.Hom.runDNAcopy, array = array, chrom.to.plot = 19,  : 
object 'chrominfo.Mb' not found
>

它至少在调用我的函数版本,因为它打印消息(“它活着!”)我陷入了 my_genomePlot

最佳答案

您要永久编辑该功能吗?还是只是暂时的?

如果您想要永久更改,那么您应该获取包的源版本,修改源代码,然后从更改的源安装包。还要考虑将更改回馈给作者/维护者。

如果您想要临时更改,请尝试以下命令:

trace(genomePlot, edit=TRUE)

这将打开一个带有源代码的编辑器(如果您不想使用默认值,也可以指定哪个编辑器)并让您编辑它。当您保存并退出编辑器时,它将保存您编辑过的版本,而不是原来的环境/命名空间/等。

此更改仅持续当前 R session 或直到您调用 untrace功能。

关于r - 修改包功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com