我正在使用Matrix包在我的个人R包中包含的函数内创建一个稀疏矩阵,比如说
myfun <- function(x, ...){
d = Matrix(0, 5, 5, sparse = TRUE)
d[seq(1,25, by=x)] = 1
t(d)
}
(class(d)is&#34; dgCMatrix&#34;) 如果我在一般环境中声明该函数并从控制台运行它,一切正常。但是,当从包中调用它时,我得到了
Error in t.default(D) : argument is not a matrix
本质上R试图从基础环境调用t()函数,而不是Matrix包提供的t()版本,它拥有处理dgCMatrix类对象的方法。
我尝试在函数中显式调用库(Matrix),但它没有帮助。
我和另一个函数colSums()有同样的问题,我用Matrix :: colSums()解决了它。但是,我想找到一个更通用和实用的补救措施,而不是为每个功能指定环境。
我强调如果我在一般环境中加载函数,R会正确加载Matrix中的函数。
关于问题根源的任何想法,或者我如何强制R从Matrix读取这些函数?