我正在向 CRAN 提交 R 包。现在我正在尝试减少包的内存占用。因为这个包处理具有非常特殊格式的空间数据,所以我想包含一个格式正确的 shapefile 作为示例。如果我包含全尺寸的原始 shapefile,则 R CMD 检查中不会出现任何警告(文件大小除外)。但是,如果我裁剪文件并将裁剪后的版本包含在包中(在“inst/extdata”中),我会收到此警告:
\nW checking for executable files (389ms)\n Found the following executable file:\n inst/extdata/temp/temp.dbf\n Source packages should not contain undeclared executable files.\n See section \xe2\x80\x98Package structure\xe2\x80\x99 in the \xe2\x80\x98Writing R Extensions\xe2\x80\x99 manual.\nRun Code Online (Sandbox Code Playgroud)\n该文件是与 shapefile 关联的数据库文件。rgdal我尝试过使用函数、sf函数和使用 QGIS来裁剪文件并保存它。我还使用 验证了裁剪文件的模式与原始文件匹配chmod。我什至尝试将 .dbf 更改为 .DBF。除了将其列在 BinaryFiles 中(CRAN 不会在提交中接受)之外,是否有人还有任何其他建议?
我在 Mac OSX 10.15.7 上通过 RStudio 2021.09.1 运行 R 版本 4.0.2。rgdal并sf完全更新,它们的所有依赖项也是如此。
我有一系列包含两个列x和y的十个数据框。我想向每个包含数据框名称的数据框添加一个新列。我遇到的问题是如何使用变量引用数据框,以便可以迭代执行此任务。除了仅通过变量名称引用它外,我还尝试了get(),如下所示:
for(i in 1:10){
name <- paste(substr(fileList, 3, 7),i, sep = "")
assign(newName, as.data.frame(get(name)))
get(newName)$Species = c(paste(substr(fileList, 3, 7),i, sep = ""))
}
Run Code Online (Sandbox Code Playgroud)
但是,这样做时出现以下错误:
Error in get(newName)$Species = c(paste(substr(fileList[a], 3, 7), i, :
could not find function "get<-"
Run Code Online (Sandbox Code Playgroud)
是否有另一种方式来表达列分配命令的短语,以便我可以解决此错误,还是解决方案更复杂?