我正在尝试将非CRAN repo中的函数导入到我的包中。
我知道R在CRAN中搜索Imports:
文件的DESCRIPTION
字段中声明的任何包。有没有办法,例如,从包'notoncran'导入function
,这只是在Github(或其他非CRAN地方)。
我已经找到了一个不需要的解决方法,其中包括完全绕过Imports:
字段,方法是将我的函数定义为:
myfun <- function(a,b){
x <- require(notoncran)
if(!x){
print("installing notoncran because you don't have it...")
devtools::install_github('repo/withpackage')
require(notoncran)
}
...
}
我不喜欢这个想法,因为你在未经用户同意的情况下在某种程度上从一个可能不受管制的(理论上危险的)来源安装一个/几个软件包。通过使用管理业务权衡功能,这也在一定程度上降低了功能的可读性。最后,这种方法最终需要运行require()
或library()
,将所有包的函数抛入用户的命名空间,这绝不是理想的。
感谢您提供任何帮助。
答案 0 :(得分:3)
一个超级简单的技巧是在我们的spino = dialog.findViewById(R.id.language_spinner);
if (spino != null) {
spino.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item_position = String.valueOf(position);
int itemposition = Integer.parseInt(item_position);
String selected = String.valueOf(spino.getAdapter().getItem(position));
Log.e("selected position",""+itemposition);
Log.e("selected Text",selected);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
else{
Log.e("Selected item :","NULL:");
}
文件中添加一个'remotes'字段,以指定Github上目标软件包的用户名/ package_name目标。
DESCRIPTION
这不仅对github(Remotes:
github::User/PackageNotOnCRAN
Import:
PackageNotOnCRAN
Suggests:
devtools,
testthat
)上的文件非常有效,而且对git,bitbucket,本地包等有效。