我想在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是一个整数。谢谢!
visited[atom_count] = 1
Atom_Count
4bbkushb1#
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一样。
guicsvcw2#
如果像您的情况一样,只希望“字典”存储相同类型的值,则可以简单地使用一个向量,并命名每个元素。
> l <- c(a = 1, b = 7, f = 2) > l a b f 1 7 2
如果你想访问“keys”,使用names。
names
> names(l) [1] "a" "b" "f"
pcrecxhr3#
我相信使用哈希表(创建一个新的环境)可能是解决你的问题的方法。我会输入如何做到这一点,但我昨天在talkstats.com上这样做了。如果你的字典很大,只有两列,那么这可能是一条路。这里是带有示例R代码的talkstats线程的链接:哈希表链接
llew8vvj4#
这样:
visited <- list() if (!(atom_count %in% names(visited))) { Do stuff visited[[as.character(atom_count)]] <- 1 }
4条答案
按热度按时间4bbkushb1#
R中最接近python dict的东西就是列表。像大多数R数据类型一样,列表可以有一个names属性,可以让列表像一组名称-值对一样运行:
现在是通常的免责声明:它们并不完全相同;所以你会失望地尝试使用列表,就像你在python中使用dict一样。
guicsvcw2#
如果像您的情况一样,只希望“字典”存储相同类型的值,则可以简单地使用一个向量,并命名每个元素。
如果你想访问“keys”,使用
names
。pcrecxhr3#
我相信使用哈希表(创建一个新的环境)可能是解决你的问题的方法。我会输入如何做到这一点,但我昨天在talkstats.com上这样做了。
如果你的字典很大,只有两列,那么这可能是一条路。这里是带有示例R代码的talkstats线程的链接:
哈希表链接
llew8vvj4#
这样: