首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保存通过rgbif下载的单个物种数据?

如何保存通过rgbif下载的单个物种数据?
EN

Stack Overflow用户
提问于 2014-11-23 12:52:14
回答 1查看 271关注 0票数 0

我有一个物种列表,我想从它们下载发生数据使用rgbif。我试着用两个物种来测试代码,假设当我让它工作的时候,让它工作在实际的(更长的)列表上是没有问题的。下面是我使用的代码:

代码语言:javascript
复制
#Start
library(rgbif)
splist <- c('Acer platanoides','Acer pseudoplatanus')
keys <- sapply(splist, function(x) name_suggest(x)$key[1], USE.NAMES=FALSE)
OS1=occ_search(taxonKey=keys, fields=c('name','key','decimalLatitude','decimalLongitude','country','basisOfRecord','coordinateAccuracy','elevation','elevationAccuracy','year','month','day'), minimal=FALSE,limit=10, return='data')
OS1
#End

这一点几乎是完美的。我得到了按物种划分的两个物种的数据。一个物种缺少了一些列,但我认为这是数据的问题,而不是代码的问题。下一句我试过-

代码语言:javascript
复制
write.csv(OS1, "os1.csv")

当拯救一个单一物种时,效果很好,但不能超过一个。有人能帮忙吗?如何将每个物种的数据保存为单独的文件,同时考虑到我也希望该方法能够为两个以上的物种提供数据?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-23 14:14:16

结果是一个列表,这意味着您可以使用R的函数爬升每个列表元素并保存它。下面的代码提取物种名称(您可能已经将其放置在某个地方),并使用mapply对物种数据和文件名进行配对,并使用它保存.txt文件。

代码语言:javascript
复制
filenames <- paste(sapply(sapply(OS1, FUN = "[[", "name", simplify = FALSE), unique), ".txt", sep = "")

mapply(OS1, filenames, FUN = function(x, y) write.table(x, file = y, row.names = FALSE))

这类似于for循环解决方案,但有些人可能会认为是更简洁的解决方案。

代码语言:javascript
复制
for (i in 1:length(filenames)) {
  write.table(OS1[[i]], file = filenames[i], row.names = FALSE)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27089159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档