94

我想在R中制作相当于python dict的东西。基本上在python中,我有:

visited = {}

if atom_count not in visited:
  Do stuff
  visited[atom_count] = 1

这个想法是,如果我看到具体的 atom_count,我有visited[atom_count] = 1. 因此,如果我再次看到那个 atom_count,那么我就不会“做事”。Atom_Count是一个整数。

谢谢!

4

3 回答 3

89

R中最接近python dict的东西就是一个列表。像大多数 R 数据类型一样,列表可以有一个 names 属性,它可以允许列表像一组名称-值对一样工作:

> l <- list(a = 1,b = "foo",c = 1:5)
> l
$a
[1] 1

$b
[1] "foo"

$c
[1] 1 2 3 4 5

> l[['c']]
[1] 1 2 3 4 5
> l[['b']]
[1] "foo"

现在对于通常的免责声明:它们并不完全相同;会有差异。因此,尝试完全按照在 python 中使用 dict 的方式使用列表,你会感到失望。

于 2012-05-21T04:21:26.590 回答
7

如果像您的情况一样,您只希望“字典”存储相同类型的值,则可以简单地使用向量并命名每个元素。

> l <- c(a = 1, b = 7, f = 2)
> l
a b f 
1 7 2

如果要访问“密钥”,请使用names.

> names(l)
[1] "a" "b" "f"
于 2018-06-05T13:23:43.107 回答
5

我相信使用哈希表(创建新环境)可能会解决您的问题。我会输入如何执行此操作,但我昨天在talkstats.com 上才这样做。

如果您的字典很大并且只有两列,那么这可能是要走的路。这是带有示例 R 代码的 talkstats 线程的链接:

哈希表链接

于 2012-05-21T05:45:06.427 回答