【发布时间】:2017-06-04 09:52:36
【问题描述】:
作为一项长期政策,我避免将名称导入(也称为“污染”)当前范围,而是在引用不同包中定义的项目时使用完全限定名称。
下面的脚本表明,在 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]
脚本失败
Error in y[1, 1] : incorrect number of dimensions
Execution halted
脚本的唯一错误似乎是在失败语句之前的某处没有包含 library(edgeR) 行,因为如果取消注释掉的行,错误就会消失。
这是巫毒教,恕我直言。
有没有办法避免错误而不用library(edgeR) 污染当前范围?
【问题讨论】:
-
看看模块包。
-
@G.Grothendieck:感谢您的建议,但我承认,在快速浏览
modules网站后,我不清楚这个包在这种情况下有何帮助。你介意详细说明一下吗?
标签: r import fully-qualified-naming