r - 下载物种发生数据时的for循环问题
问题描述
我想从 gbif 网站下载发生数据,并使用以下 R 脚本。当我运行脚本时,我收到以下消息“错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE,:参数暗示不同的行数: 1, 0)"。如果有人能帮我解决这个问题,我将不胜感激。
我的数据:数据
我的 R 脚本:
flist<-read_excel("Mekong fish.xlsx",sheet="Sheet1")
##Loop
fname<-list()
Occ<-list()
datfish<-list()
name_list<-unique(flist$Updated_name)
# create for loop to produce ggplot2 graphs
for (i in seq_along(name_list)) {
# create plot for each Occurrence in df
Occ[[i]] <-occ_search(scientificName = name_list[i], limit=2)
fname[[i]]<-occ_search(scientificName = name_list[i],
fields = c("species", "country","decimalLatitude", "decimalLongitude"),
hasCoordinate=T, limit= Occ[[i]]$meta[4],return ="data")
datfish[[i]]<-as.data.frame(fname[[i]]$data)
}
解决方案
我得到了一个不同的错误:
在 D1424 / R1424C4 中期望逻辑:在老挝得到'在 D1426 / R1426C4 中得到逻辑:在中国得到'在 D1467 / R1467C4 中得到逻辑:在 D1469 / R1469C4 中得到'只有柬埔寨'期望在 D1469 / R1469C4 中符合逻辑:在 VN 中得到'仅在 VN'期望在 D1473 / R1473C4 中符合逻辑:在 D1486 / R1486C4 中符合逻辑:在 D1486 / R1486C4 中符合逻辑:在 D1488 / R1488C4 中符合逻辑:在 VN 中只有 1 分
我认为问题是在第 4 列的某些字段中引起的。我没有安装正确的软件包来运行您的代码。但是一旦我删除了第四列,我得到了一个不同的错误(包丢失)。
flist<-read_excel("~/Downloads/Mekong fish.xlsx",sheet="Sheet1")
flist <=subset(flist, select = -4)
...
编辑:
这对我有用。read_excel
为第 4 列分配了布尔类型。当我明确将其设置为文本时,它起作用了。
library(readxl)
library(rgbif)
library(raster)
flist<-read_excel("~/Downloads/Mekong fish.xlsx",
sheet="Sheet1",
col_types = c("numeric", "text", "numeric", "text"))
flist
##Loop
fname<-list()
Occ<-list()
datfish<-list()
name_list<-unique(flist$Updated_name)
# create for loop to produce ggplot2 graphs
for (i in seq_along(name_list[1:2])) {
message(i)
# # create plot for each Occurrence in df
Occ[[i]] <-occ_search(scientificName = name_list[i], limit=2)
message(Occ[[i]])
fname[[i]]<-occ_search(scientificName = name_list[i],
fields = c("species", "country","decimalLatitude", "decimalLongitude"),
hasCoordinate=T, limit= Occ[[i]]$meta[4],return ="data")
message(fname[[i]])
datfish[[i]]<-as.data.frame(fname[[i]]$data)
message(datfish[[i]])
}
> 1
> list(offset = 0, limit = 2, endOfRecords = FALSE, count = >15)list(list(name = c("Animalia", "Chordata", "Actinopterygii",
> "Cypriniformes", "Cyprinidae", "Aaptosyax", "Aaptosyax grypus"), key = > > c("1", "44", "204", "1153", "7336", "2363805", "2363806"),
> etc...
推荐阅读
- java - 在 maven 编译期间创建 Java 类的 shell 或 groovy 脚本
- python - xgboost.core.XGBoostError:需要预先调用 fit - 尝试通过腌制模型进行预测时
- android - 具有多个片段的 ViewModel
- c# - 将新线程注册到已定义的屏障
- python - 如何将 ipython/jupyter 设置为 vscode 的默认 python 终端?
- c++ - 受保护的 noexcept 构造函数似乎不是来自派生类的 noexcept 。为什么?
- r - 非唯一标签时如何在ggplot geom_bar中排列x值
- playframework - 让玩!为 Scala.js 脚本动态插入数据
- unity3d - Unity正交相机渲染一切?
- python - Matplotlib 离线绘图