我想使R中的python字典等效。基本上,在python中,我有:
visited = {}
if atom_count not in visited:
Do stuff
visited[atom_count] = 1
这个想法是,如果我看到了那个特定的atom_count,我就访问了[atom_count] =1。因此,如果我再次看到那个atom_count,我就不会“做东西”。Atom_Count是一个整数。
谢谢!
Answers:
在R中,最接近python字典的是一个列表。像大多数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中使用字典完全相同的方式来实际使用列表。
l$names(l)[1]
显然失败了。我也没能l[which()]
上班
for
循环(几乎在每种语言中都有这种选择)之外,还有lapply
。还有一些具有不同语法的相关事物,例如Map
和,以及一个完整的软件包,其中包含许多功能性编程内容。
l[[names(l)[1]]
应该可以。无论如何,您可以像这样进行迭代:l[[1]]
无需使用名称。请注意,单括号[]
将返回列表,而双括号[[]]
将返回列表内的对象。
names(list) <- vector_of names
分配也可以names(list)[1] <- "foo"
。另请参阅setNames()
。
hash
,其具有几乎类似于Python的访问功能。