如何动态加载库?

YYY*_*YYY 3 r

很抱歉提出简单问题.我是R初学者.我试图加载库运行时,例如

x<-"snow"; library(eval(x))
Run Code Online (Sandbox Code Playgroud)

结果:

Error in library(eval(x)) : 'package' must be of length 1.
Run Code Online (Sandbox Code Playgroud)

如果有人给我一些解决方案,我将不胜感激.

Aar*_*ica 9

使用character.only=TRUE.有关库,请参阅库的帮助页面?library.

> library(x, character.only=TRUE)
Run Code Online (Sandbox Code Playgroud)


cbe*_*ica 1

我建议使用require而不是library.

  • require返回一个逻辑值,指示包是否已成功加载,即您可以在类似的构造中使用它

    if (require (x, character.only = TRUE))
        ...
    
    Run Code Online (Sandbox Code Playgroud)

    相反,library如果包不可用,默认情况下将停止并出现错误(logical.return = TRUE不过,您可以通过 更改此行为)。

  • 如果包已经加载,并且这部分代码经常执行,速度可能很重要:如果包已经加载,速度require几乎比我的笔记本电脑快 20 倍。library如果没有,则调用library.