关于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()调用。
是否有更好的方法来保存和存储操纵数据集?我希望我的用户能够调用数据集和函数,而无需使用::