我想在R中使用等效的python dict。基本上,在python中我有:
visited = {}
if atom_count not in visited:
Do stuff
visited[atom_count] = 1
这个想法是,如果我看到那个特定的,atom_count,我已经访问过[atom_count] = 1.因此,如果我再次看到atom_count,我就不会“Do Stuff”。 Atom_Count是一个整数。
谢谢!
答案 0 :(得分:57)
与R中最接近python dict的东西只是一个列表。与大多数R数据类型一样,列表可以具有名称属性,该属性可以允许列表像一组名称 - 值对一样运行:
> 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的方式使用列表。
答案 1 :(得分:5)
我相信使用哈希表(创建新环境)可能是您问题的解决方案。我打算如何做到这一点,但我昨天在talkstats.com上这样做了。
如果您的字典很大且只有两列,那么这可能就是您的选择。这是带有示例R代码的talkstats线程的链接:
答案 2 :(得分:2)
如果像你的情况一样,你只想让你的“字典”存储相同类型的值,你可以简单地使用一个向量,并命名每个元素。
> l <- c(a = 1, b = 7, f = 2)
> l
a b f
1 7 2
如果您想访问“密钥”,请使用names
。
> names(l)
[1] "a" "b" "f"