/ / Rの非文字ライブラリ呼び出しのクラスは何ですか? - 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はこれをどのように扱いますか?

回答:

回答№1は2

関連する 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、シンボルオブジェクト knitr 私たちが合格したとき quote(knitr).

character.only の議論 library() 文字列変数を渡す場合に使用するものです。 "knitr";

str_var <- "knitr"
library(str_var,character.only=TRUE)