进一步思考(并在重新阅读您的问题后),这是一个适合您的简单解决方案。
您需要做的就是将您编辑的版本分配给全局环境kmeans()中的符号kmeans。换句话说,在命令行执行以下操作:
kmeans <- function(...) plot(rnorm(99), col="red") # but using your own edits
## Then run an example from ?KMeansSparseCluster to see that it works.
library(sparcl)
x <- matrix(rnorm(50*300),ncol=300)
x[1:25,1:50] <- x[1:25,1:50]+1
x <- scale(x, TRUE, TRUE)
KMeansSparseCluster.permute(x,K=2,wbounds=seq(3,9,len=15),nperms=5)
这是有效的,因为KMeansSparseCluster()(和调用任何其他函数package:sparcl)kmeans 首先查找in namespace:sparcl,然后in imports:sparcl,然后in namespace:base,然后 in ,它会在它到达 in 之前.GlobalEnv找到您的重新定义。要自己看看,试试这个:kmeanspackage:stats
parent.env(asNamespace("sparcl"))
parent.env(parent.env(asNamespace("sparcl")))
parent.env(parent.env(parent.env(asNamespace("sparcl"))))
## etc., also wrapping any of the environments above in calls to ls()
## to see what's in 'em
很好,使用的 stats 包中的函数kmeans()不会被您的版本中断,因为它们会kmeans在符号搜索进入全局环境之前在自己的命名空间中找到。