【问题标题】:How to use the value of a variable as key in an R-environment?如何在 R 环境中使用变量的值作为键?
【发布时间】:2011-11-17 22:27:53
【问题描述】:

在 R 编程语言中,我想使用哈希表。

如何使用变量的值作为环境的键?

例如:

map <- new.env(hash=T, parent=emptyenv())
key <- 'ddd'
map$key <- 4
print(ls(map))
>>[1] "key"

输出是'key',这意味着我得到了从字符串'key'到值4的映射。我真正想要这段代码做的是将字符串'ddd'映射到值4。

我怎样才能做到这一点?

附言。我不使用命名列表,因为它不使用散列来进行搜索,大量元素时速度很慢。

【问题讨论】:

  • PPS。命名列表确实使用散列。但只有当您使用包含许多元素的矢量化子集时,花时间构建哈希表才有意义。
  • @hadley,是否有参数指定是否在命名的 lsits 中使用哈希?或者它会根据元素的数量自动执行?
  • @hadley,与哈希环境相比,启发式命名列表的效率如何?
  • 一切都取决于你在做什么。没有例子很难知道。
  • @hadley,有什么链接可以看详细了解吗?

标签: r hashmap


【解决方案1】:

正如?"$" 所说:

 Both ‘[[’ and ‘$’ select a single element of the list.  The main
 difference is that ‘$’ does not allow computed indices, whereas
 ‘[[’ does.  ‘x$name’ is equivalent to ‘x[["name", exact =
 FALSE]]’.  Also, the partial matching behavior of ‘[[’ can be
 controlled using the ‘exact’ argument.

所以你想要:

map[[key]] <- 4
> print(ls(map))
[1] "ddd" "key"
> map[[key]]
[1] 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2017-08-07
    • 2018-09-24
    • 2020-07-12
    相关资源
    最近更新 更多