如何缓存在R中接受用户输入的矢量化调用?

时间:2018-05-01 19:43:01

标签: r caching bigdata vectorization user-input

我正在尝试为大型数据集的所有行计算字段。计算它的函数来自包taxize,并使用HTTP请求在外部站点查询正确的ID号。它按科学名称搜索,通常有多个结果,在这种情况下,此功能要求用户输入。我希望该函数缓存我的选择并在每次进行相同的调用时返回该ID号。我已经尝试使用自己的缓存函数和来自R.cache包的memoizedCall(),但是每次遇到相同科学名称的第二个条目时,它仍然会提示我输入用户。我觉得我误解了关于矢量化如何工作的基本信息。对不起我的无知,但任何建议表示赞赏。

以下是我用作自定义缓存功能的代码。

check_tsn <- function(data,tsn_list){
  print(data)
  print(tsn_list)
  if (is.null(tsn_list$data)){
    tsn_list$data = taxize::get_tsn(data)
    print('added to tsn_list')
  }
  return(tsn_list$data)
}
tsn_list <- vector(mode = "list", nrow(wanglang))
Genus.Species <- c('Tamiops swinhoei','Bos taurus','Tamiops swinhoei')
IUCN.ID <- c('21382','','21382')
species <- data.frame(Genus.Species,IUCN.ID)
species$TSN.ID = check_tsn(species$Genus.Species,tsn_list)

0 个答案:

没有答案