【问题标题】:how to load a library dynamically? [duplicate]如何动态加载库? [复制]
【发布时间】:2013-10-22 19:22:35
【问题描述】:

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

x<-"snow"; library(eval(x))

结果:

Error in library(eval(x)) : 'package' must be of length 1.

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

【问题讨论】:

  • 您已经有了答案,但一般来说,在发布您的问题之前检查您所询问的功能的文档是个好主意 - 很多时候您将能够找到答案自己这样。 ?library
  • 这个困难(让R把一个字符字符串当作一个对象的名字)弹出了很多。一些函数,比如library,有内部代码来进行翻译。许多人不这样做,这时do.call 之类的工具就派上用场了。

标签: r


【解决方案1】:

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

> library(x, character.only=TRUE)

【讨论】:

    【解决方案2】:

    我建议使用require 而不是library

    • require 返回一个逻辑,指示包是否已成功加载,即您可以在类似

      的结构中使用它
      if (require (x, character.only = TRUE))
          ...
      

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

    • 1234563如果没有,它会调用library

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 2020-09-29
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多