小编Han*_* O.的帖子

在命令检查期间使 R 确信与 .shp 文件关联的 .dbf 文件不是可执行文件

我正在向 CRAN 提交 R 包。现在我正在尝试减少包的内存占用。因为这个包处理具有非常特殊格式的空间数据,所以我想包含一个格式正确的 shapefile 作为示例。如果我包含全尺寸的原始 shapefile,则 R CMD 检查中不会出现任何警告(文件大小除外)。但是,如果我裁剪文件并将裁剪后的版本包含在包中(在“inst/extdata”中),我会收到此警告:

\n
W  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.\n
Run Code Online (Sandbox Code Playgroud)\n

该文件是与 shapefile 关联的数据库文件。rgdal我尝试过使用函数、sf函数和使用 QGIS来裁剪文件并保存它。我还使用 验证了裁剪文件的模式与原始文件匹配chmod。我什至尝试将 .dbf 更改为 .DBF。除了将其列在 BinaryFiles 中(CRAN 不会在提交中接受)之外,是否有人还有任何其他建议?

\n

我在 Mac OSX 10.15.7 上通过 RStudio 2021.09.1 运行 R 版本 4.0.2。rgdalsf完全更新,它们的所有依赖项也是如此。

\n

r geospatial

9
推荐指数
1
解决办法
241
查看次数

在R中创建新列时,通过变量名称引用数据框

我有一系列包含两个列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)

是否有另一种方式来表达列分配命令的短语,以便我可以解决此错误,还是解决方案更复杂?

variables get r dataframe

3
推荐指数
1
解决办法
611
查看次数

标签 统计

r ×2

dataframe ×1

geospatial ×1

get ×1

variables ×1