【问题标题】:Calling on the content of an object, and not the name of the object. Or renaming the object the name of the content of said object调用对象的内容,而不是对象的名称。或将对象重命名为所述对象内容的名称
【发布时间】:2014-03-23 22:54:50
【问题描述】:

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

问题在于,在 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")

【问题讨论】:

    标签: r names install.packages spatialpack


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2023-02-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多