Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免污染当前作用域(使用“library(…)”)_R_Import_Fully Qualified Naming - Fatal编程技术网

如何避免污染当前作用域(使用“library(…)”)

如何避免污染当前作用域(使用“library(…)”),r,import,fully-qualified-naming,R,Import,Fully Qualified Naming,作为一项长期政策,我避免将名称导入(也称为“污染”)当前范围,而是在引用不同包中定义的项目时使用完全限定名称 下面的脚本显示,在R中,使用限定名本身是不够的 #!/usr/bin/env Rscript set.seed(0) x <- local({ x0 <- matrix(rnbinom(80, size = 5, mu = 10), nrow = 20) `rownames<-`(rbind(0, c(0, 0, 2, 2), x

作为一项长期政策,我避免将名称导入(也称为“污染”)当前范围,而是在引用不同包中定义的项目时使用完全限定名称

下面的脚本显示,在R中,使用限定名本身是不够的

#!/usr/bin/env Rscript

set.seed(0)

x <- local({
         x0 <- matrix(rnbinom(80, size = 5, mu = 10), nrow = 20)
         `rownames<-`(rbind(0, c(0, 0, 2, 2), x0),
                      paste("Tag", 1:(nrow(x0) + 2), sep = "."))
     })

y <- edgeR::DGEList(counts = x,
                    group = rep(1:2, each = 2),
                    lib.size = 1001:1004)

## library(edgeR)

y[1, 1]
脚本的唯一罪过似乎是没有在失败语句之前的某个地方包含行
library(edgeR)
,因为如果对注释掉的行取消注释,错误就会消失

这是伏都教,伊莫


有没有一种方法可以避免错误而不污染当前作用域的
库(edgeR)

当您避免加载
edgeR
包时,您也可以避免加载
[.DGEList
方法,这是执行
y[1,1]所必需的
。如果您不想加载
edgeR
库,则需要直接调用提取函数:

edgeR::`[.DGEList`(y, 1, 1)
如果您不喜欢完全限定语法,可以引入所需的方法

`[.DGEList` <- edgeR::`[.DGEList`

`[.DGEList`当您避免加载
edgeR
包时,也避免加载
[.DGEList
方法,这是执行
y[1,1]
所必需的。如果您不想加载
edgeR
库,则需要直接调用提取函数:

edgeR::`[.DGEList`(y, 1, 1)
如果您不喜欢完全限定语法,可以引入所需的方法

`[.DGEList` <- edgeR::`[.DGEList`

`[.DGEList`看看模块包。@G.Grothendieck:谢谢你的建议,但我承认,在快速浏览了
模块
网站之后,我不清楚这个包在这种情况下会有什么帮助。你介意详细说明一下吗?看看模块包。@G.Grothendieck:谢谢你的建议,但是我承认,在快速浏览了<代码>模块<代码>网站后,我不清楚这个包会如何帮助你。你介意详细解释一下吗?谢谢!BTW,我不考虑<代码> [Digelist'谢谢!BTW,我不考虑<代码> [dgelist]