【问题标题】:data structure to check if list contains an element in constant time in R用于检查列表是否包含R中恒定时间元素的数据结构
【发布时间】:2011-04-23 15:59:05
【问题描述】:

我正在寻找数据结构来检查名称是否包含在恒定时间内的列表中。目前我正在这样做,但它可能需要 O(N) 复杂度。

> l = read.csv("test.csv")[,1]   # reads a long list of names
> if (x %in% l) { ... }        # check if it contains a name, takes O(N) time

【问题讨论】:

  • 想给我们看一些虚拟数据吗?
  • 'l' 只是一长串名称/字符串,x 是单个名称。

标签: list r map


【解决方案1】:

您可以使用提供关联数组的hash 包。您将不得不花费一些时间来构建哈希,但是当您使用应该具有 O(1) 查找速度的 has.key() 方法时,它会得到回报。

CRAN 有你需要的。

【讨论】:

  • 我可以使用类似于列表的东西吗?
  • 我想我不明白。您是否担心会丢失数据?它在哈希的键中。您可以将值设为它发生(或不发生)的次数。这是一个非常有用的数据结构。如果您不介意使用内存,您还可以将数据放入哈希表之外。
  • 否,因为我一直在我的程序中广泛使用列表并将其用作地图,并且希望尽可能使用相同的数据结构。但我猜哈希会起作用。
【解决方案2】:

您还可以将环境用作已实现的哈希表。查看 6 年前对该主题的贡献:

http://finzi.psych.upenn.edu/R/Rhelp02/archive/51512.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2014-07-31
    • 1970-01-01
    • 2018-11-17
    • 2021-10-30
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多