/ / Какъв клас е вътре в библиотека с не-символни библиотеки в 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?

Отговори:

2 за отговор № 1

Съответните редове от 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)