r - R 中的非字符库调用中有什么类?

标签 r

在 R 中,我们可以加载包:

library(knitr)

或者
library("knitr")

?library ,它说这个参数可以是一个字符或一个名字。然而:
is.name(knitr)
Error: object 'knitr' not found
class(knitr)
Error: object 'knitr' not found

当一个包包含一个也是包名称的函数时,这也变得更加复杂:
library(data.table)
class(data.table)
[1] "function"
library(data.table) #returns nothing

不知何故,它知道不传递函数 data.table进入库函数,而是将其解释为加载包的调用(我认为)。 R 如何处理这个问题?

最佳答案

library()的相关线路说

if (!character.only) 
        package <- as.character(substitute(package))

我们可以创建自己的小函数(library() 很复杂!)来探索它是如何工作的:
tmpf <- function(x) {
   str(substitute(x))
}
tmpf(knitr)
## symbol knitr

我们可以使用 quote() 做一个等价的东西:
str(quote(knitr))
## symbol knitr

但是将它传递给 tmpf()不保留其形式,因为 substitute()称呼:
tmpf(quote(knitr))
## language quote(knitr)

如果我们把 eval(substitute(x))进入 tmpf() , 当我们通过 knitr 时,我们会得到“object knitr not found” , 和一个符号对象 knitr当我们经过时quote(knitr) .
character.only论据 library()如果你想传递一个值为 "knitr" 的字符串变量,你可以使用它;
str_var <- "knitr"
library(str_var,character.only=TRUE)

关于r - R 中的非字符库调用中有什么类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621107/

相关文章:

r - 使用 smooth.spline 进行过冲

r - 使用 ggplot2 绘制具有稳健标准误差的预测值

r - 在 R 的矩阵中找到所有 'cycles/cliques' 的最佳方法是什么?

r - 如何测试向量是否包含重复元素?

R:检查是否提供了强制/必需的参数

r - 测试向量是否包含给定元素

r - 如何在 R 中跟踪 URL 的任何重定向?

r - 使用 getURL 抓取 https 网站

r - 如何计算 R 中前 10% 的平均值

在 R 中运行 glmnet 包,得到错误 "missing value where TRUE/FALSE needed",可能是由于缺少值?