调用对象的内容,而不是对象的名称。或者将对象重命名为所述对象的内容的名称

时间:2014-03-23 22:54:51

标签: r names install.packages spatialpack

所以我的目标是创建一个首先尝试加载包的函数。如果无法加载,则会尝试安装然后加载它。我在某处看到了这种类型的代码,我在几个函数中使用它,我总是在函数中指定必要的包。我认为这将是一个很好的工具,可以概括为一个函数。有这么多包我经常忘记我已经安装的。

问题是在lib和lib2中它传递了对象的名称("package")而不是对象内容的名称("SpatialPack")。我尝试了一些事情,比如指定对象中的位置("package[1]"),但这没有做任何事情。

任何帮助它来调用对象的内容,而不是对象的名称将是很棒的。谢谢!

  get.package<-function(package){
  lib<-require(package)
  if(lib==TRUE)
  {
    print(paste(c(package,"Package successfully loaded")))
  }
 if(lib==FALSE)
 {
 print(paste(c("Attempting to install and load",package,"Package")))
 install.packages(package)
 lib2<-require(package)
 if (lib2==TRUE)
 {
 print(paste(c(package,"Package successfully installed and loaded")))
 }
 else print(paste(c(package,"Package unable to be installed")))

 }
 }

 get.package("SpatialPack")

1 个答案:

答案 0 :(得分:2)

requirelibrary都会进行非标准评估,但您可以使用参数来抑制此问题。尝试将代码更改为:

 require(package,  character.only = TRUE)

演示:

> strangeName <- "sets"
> require(strangeName, character.only=TRUE)
Loading required package: sets

Attaching package: ‘sets’

The following object is masked from ‘package:data.table’:

    set