【问题标题】:Using rpy2 to check if I have the latest version of an R package installed使用 rpy2 检查我是否安装了最新版本的 R 包
【发布时间】:2021-12-24 17:34:57
【问题描述】:

我有以下方法来检查是否安装了 R 包。这有助于我避免每次运行代码时都安装包。

我想添加功能,以便我们可以检查是否安装了 R 包以及是否是最新版本。不过,我已经查看了 rpy2 文档,但我看不到这样做的方法。

我想知道是否有人对我如何实现这一目标有任何想法?干杯

    def get_source_package(self, package_name):
        
        # Check if R package is installed. If it is installed, import it
        if packages.isinstalled(package_name):
            self.source_package = packages.importr(package_name)
            return self.source_package

        # Check if R package is installed. If not, install and then import it
        else:
            utils = packages.importr('utils')
            utils.chooseCRANmirror(ind=1)
            utils.install_packages(package_name)
            self.source_package = packages.importr(package_name)
            return self.source_package

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    您可以使用utils 中提供的另外两个函数来获取已安装和可用软件包的版本,并比较两者以获得答案。相关R代码在https://stackoverflow.com/a/2563683中提供,可以翻译成Python如下:

    from rpy2.robjects.packages import importr
    
    utils = importr('utils')
    
    def extract_versions(package_data):
        return dict(zip(
            package_data.rx(True, 'Package'),  # get Package column
            package_data.rx(True, 'Version')   # get Version column
        ))
    
    
    i = extract_versions(utils.installed_packages())
    a = extract_versions(utils.available_packages())
    
    package_name = 'ggplot2'
    
    is_latest_version = i[package_name] == a[package_name]
    

    【讨论】:

    • 非常感谢!我认为 utils 包中可能有一些东西,但找不到任何东西。我目前在 Github 上对包的 repo 使用 GET 请求,但我将尝试这个解决方案,因为它更干净,而且正是我所追求的。再次感谢!
    猜你喜欢
    • 2013-03-23
    • 2019-08-05
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2017-08-27
    • 1970-01-01
    相关资源
    最近更新 更多