R中的库和包有什么区别?

时间:2014-11-13 02:14:33

标签: r packages

R 之间有什么区别?

我遇到过人们在库中引用包的帖子。基于这个想法,我将它解释为一个包存在于一个库中(即我将我的包存储在一个指定的库中)。但是当我想使用包' x' 时,我感到困惑。

  • 我需要调用库函数才能使' x' 正在使用?
  • 一旦我打电话给' x' 这个包' x' 的功能,我就可以使用?

2 个答案:

答案 0 :(得分:14)

在R中,包是R函数,数据和编译代码的集合。存储包的位置称为库。如果您需要特定功能,则可以从相应的站点下载该程序包,它将存储在您的库中。要实际使用该包,请使用命令“library(package)”,该命令使您可以使用该包。然后只需调用相应的包函数等。

答案 1 :(得分:4)

1。的封装

Package扩展了基本的R功能并标准化了代码的分发。例如,包可以包含一组与特定主题相关的功能。

包可以作为SOURCE(包含所有包组件的目录),BINARIES(包含OS特定格式的文件)或BUNDLE(包含包组件的压缩文件,类似于源)进行分发。

最基本的包,例如使用

创建
myObj::myObj(QObject *parent) : QObject(parent), percentTimer(nullptr)
{
    moveToThread(&workerThread);

    connect(&workerThread, SIGNAL(finished()), this, SLOT(deleteLater()));
    connect(this, SIGNAL(UpdateResult()), mainClass, SLOT(on_UpdateResult()));
    connect(&workerThread, SIGNAL(started()), this, SLOT(init()));
    connect(&workerThread, SIGNAL(started()), this, SLOT(doWork()));
    connect(this, SIGNAL(start()), this, SLOT(startFunction()));

    percent++;
}

void myObj::init() {
    percentTimer = new QTimer();
    percentTimer->setInterval(1000);
    connect(percentTimer, SIGNAL(timeout()), this, SLOT(percentUpdate()));
}

包含:

所有R代码所在的

R / 目录,以及 DESCRIPTION NAMESPACE 元数据文件。

2。的

Library是存储包的目录。您可以在硬盘上安装多个库。

要查看哪些库可用(搜索哪些路径包):

library(devtools)
create("C:/Users/Documents/R-dev/MyPackage")

看看有哪些包裹:

.libPaths()

要使用软件包“ x ”,首先必须将其安装在软件包库中。这可以通过以下方式完成:

lapply(.libPaths(), dir)

install.packages(‘x’) # to install packages from CRAN

安装后,必须使用R CMD INSTALL Xpackagename.tar.gz #to install directly from source library(x)

将其加载到内存中