我想在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
是一个整数。
谢谢!
我想在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
是一个整数。
谢谢!
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 的方式使用列表,你会感到失望。
如果像您的情况一样,您只希望“字典”存储相同类型的值,则可以简单地使用向量并命名每个元素。
> l <- c(a = 1, b = 7, f = 2)
> l
a b f
1 7 2
如果要访问“密钥”,请使用names
.
> names(l)
[1] "a" "b" "f"
我相信使用哈希表(创建新环境)可能会解决您的问题。我会输入如何执行此操作,但我昨天在talkstats.com 上才这样做。
如果您的字典很大并且只有两列,那么这可能是要走的路。这是带有示例 R 代码的 talkstats 线程的链接: