使用 rpy2 检查我是否安装了最新版本的 R 包
Using rpy2 to check if I have the latest version of an R package installed
我有以下方法检查是否安装了 R 包。这有助于我避免每次 运行 代码时都安装软件包。
我想添加功能,以便我们可以检查是否安装了 R 包 AND 如果它是最新版本。我已经查看了 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
您可以使用 utils
中提供的其他两个函数来获取已安装和可用软件包的版本,并将两者进行比较以获得答案。 中提供了相关的R代码,可以翻译成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]
我有以下方法检查是否安装了 R 包。这有助于我避免每次 运行 代码时都安装软件包。
我想添加功能,以便我们可以检查是否安装了 R 包 AND 如果它是最新版本。我已经查看了 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
您可以使用 utils
中提供的其他两个函数来获取已安装和可用软件包的版本,并将两者进行比较以获得答案。 中提供了相关的R代码,可以翻译成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]