2020from collections .abc import Callable
2121from typing import Any
2222
23- from rpy2 .robjects import r
23+ from rpy2 .robjects import r as rpy2_r_interface
2424from rpy2 .robjects .packages import importr
2525
2626
27+ def load_package (name : str , min_version : str | None = None ) -> Any :
28+ """Load R package."""
29+ if min_version :
30+ has_min_version = rpy2_r_interface (
31+ f'packageVersion("{ name } ") >= "{ min_version } "'
32+ )
33+
34+ if not has_min_version [0 ]:
35+ raise RuntimeError (
36+ f"`{ name } ` must have at least version { min_version } or greater."
37+ )
38+
39+ return importr (name )
40+
41+
2742def load_data_from_package (name : str , package : str , ** kwargs ) -> object :
2843 """Load data from package.
2944
@@ -36,7 +51,7 @@ def load_data_from_package(name: str, package: str, **kwargs) -> object:
3651
3752 **kwargs: Additional arguments to pass to the function.
3853 """
39- return r .data (name , package = package , ** kwargs )
54+ return rpy2_r_interface .data (name , package = package , ** kwargs )
4055
4156
4257def load_data_from_global (name : str ) -> object :
@@ -47,7 +62,7 @@ def load_data_from_global(name: str) -> object:
4762 Args:
4863 name (str): Dataset name.
4964 """
50- return r [name ]
65+ return rpy2_r_interface [name ]
5166
5267
5368def load_function_from_package (name : str ) -> Callable [..., Any ]:
0 commit comments