在R中构建自定义程序包时分配错误(无法将绑定添加到锁定环境)

时间:2016-03-05 20:14:02

标签: r devtools r-package

关于StackOverflow的第一个问题。

我使用R创建一个可以自动转换导入数据集的包。然后做一堆操作并绘制图形。

但是,我希望这对新用户尽可能友好。

我在使用assign()命令时遇到了问题。

这是我的代码,它位于\ R文件夹内的.R文件中。此函数的目标是获取数据集,对其进行操作,将其保存以供用户查看和调用,而无需::(全局)

    SplitRawconvert = function(dataset,mapname,env = globalenv())
    {


  print("wegotthisfar")

  ContactPosx = -4648
  ContactPosy = 3900
  Contactscale = 9



  if(mapname=="contact" || mapname =="Contact")
  {
    #' saves the converted files to "Contact" specific tag.

    convertedkills = data.frame(dataset[,1], ((dataset[,2]-ContactPosx)/Contactscale), ((dataset[,3]-ContactPosy)/Contactscale))
    names(convertedkills) = c("Side","X","Y")

    converteddeaths = data.frame(dataset[,7], ((dataset[,8]-ContactPosx)/Contactscale), ((dataset[,8]-ContactPosy)/Contactscale))
    names(converteddeaths) = c("Side","X","Y")

    assign(paste("convertedkills",mapname,sep=""),convertedkills,envir=env)
    assign(paste("converteddeaths",mapname,sep=""),converteddeaths,envir=env)

    #' split the deaths and kills by "side"
    splitdatadeaths = split(converteddeaths,converteddeaths[,1])
    splitdatakills = split(convertedkills,convertedkills[,1])


    DS = splitdatadeaths$Security
    DI = splitdatadeaths$Insurgents

    KS = splitdatakills$Security
    KI = splitdatakills$Insurgents


    assign(paste(mapname,"DeathSec",sep=""),DS,envir=env)
    assign(paste(mapname,"DeathIns",sep=""),DI,envir=env)
    assign(paste(mapname,"KillSec",sep=""),KS,envir=env)
    assign(paste(mapname,"KillIns",sep=""),KI,envir=env)
    }
    }`

我知道我正在保存到全球环境,这是故意的,以便全球环境可以访问转换后的数据。

我是R软件包开发的新手,但是几天前(虽然仍在使用assign),软件包可以完全构建。

我收到的错误是在运行build& check

之后

http://puu.sh/nvXfI/22ddced453.png

(链接到上图)

" importIntoEnv(pkgenv,exports,nsenv,exports)出错:   无法将绑定添加到锁定的环境中 调用:suppressPackageStartupMessages ... - > load_all - > export_ns - > importIntoEnv 执行暂停"

特定的代码行是函数标题中的env = globalenv()调用。

是否有更好的方法来保存和存储操纵数据集?我希望我的用户能够调用数据集和函数,而无需使用::

0 个答案:

没有答案