【发布时间】:2012-10-05 14:46:42
【问题描述】:
“sparcl”包使用标准“stat”包中的“kmeans”函数。我想让它改用我自己的 kmeans++ 实现。
执行此操作的一种方法是编辑 sparcl 包本身中的代码。我宁愿避免这种情况,因为它会很混乱,而且我不确定如何在 R 中安装编辑后的代码。
不幸的是,超赋值运算符“
> kmeans <<- function(x) print("hi!")
Error: cannot change value of locked binding for 'kmeans'
“分配”也没有:
assign("kmeans",function(x) {print("HI THERE!"); return(FALSE)},pos="package:sparcl")
Error in assign("is.null", function(x) { :
cannot add bindings to a locked environment
那么编辑包代码是唯一的方法吗?
谢谢!
【问题讨论】:
-
你能用
trace这个吗? -
您想要替换旧版本而不是仅仅编写新版本并使用该版本的原因是什么?
-
创建您自己的调用
kmeans的(导出的)函数版本并更改这些实例以便它们调用您自己的自定义函数不是更容易吗? (也许@Dason 也是这么说的……?) -
我投票支持@joran 的建议。如果您确实想打包函数,请创建自己的迷你包(可能从 stats 导入)而不是编辑 stats 包的源代码!
-
@joran 的建议并不完美,因为
kmeans在 sparcl 包的多个文件中的多个函数中被多次调用,所以我还必须复制和编辑所有这些。 ..但这就是我最初打算这样做的方式。