【发布时间】:2014-08-08 18:56:57
【问题描述】:
例如,在 R 会话中,键入 library(ggplot2) 和 library("ggplot2") 都可以导入库 ggplot2。但是,如果我在交互式会话中输入 ggplot2,我会得到:
> ggplot2
Error: object 'ggplot2' not found
因此,显然 ggplot2 不是一个对象。 library() 如何在不抱怨的情况下接受未定义的变量?
【问题讨论】:
-
因为一个糟糕的设计决策。我知道你问的是如何而不是为什么。如果你想知道怎么做,请阅读本文的第一部分:adv-r.had.co.nz/Computing-on-the-language.html
-
从技术上讲,当您调用
library(ggplot)时,参数将是“名称”对象而不是未加引号的字符串。 -
@MrFlick 不完全正确 - 该参数是一个未计算的表达式,如果计算将是一个错误。
substitute(package)是一个名字。 -
@hadley 我想我只是通过
class(parse(text="library(ggplot2)")[[1]][[2]])去,所以也许将其称为评估名称会更好,但它仍然应该是一个名称。我想我想澄清一下“未引用的字符串”到底是什么。 -
@CarlWitthoft IMO 这是一个糟糕的决定,尤其是因为它不一致。有一堆函数取包名,你还记得没有查看手册的情况下哪些需要引号:
require、unloadNamespace、install.packages、packageVersion等?确实library可能是最常用的,但我还是希望它保持一致。
标签: r