我是R编程新手。在检查了一些教程后,我拿起了我需要的大部分东西,但还是有一件东西丢失了:数据结构图。R和Python中的'dict'一样吗?
大家知道R是否有字典吗?我可以存储(键,值)对吗?
谢谢!
我是R编程新手。在检查了一些教程后,我拿起了我需要的大部分东西,但还是有一件东西丢失了:数据结构图。R和Python中的'dict'一样吗?
大家知道R是否有字典吗?我可以存储(键,值)对吗?
谢谢!
是的,它被称为list
。
> x <- list(a=1, b="foo", c=c(1,1,2,3,5))
> x
$a
[1] 1
$b
[1] "foo"
$c
[1] 1 1 2 3 5
在Python中,它被称为dict
,它的价值。
还有一个`pairlist`函数 – 2011-01-24 23:42:29
环境也是一个人选,而在很多情况下是最好的选择。
e<-new.env(hash=T)
e$a<-1
e$b<-2
R> e$a
[1] 1
列表的缺点是它是一个线性搜索。
环境使用比线性搜索更好的东西吗?根据您的经验,在线性搜索性能变得麻烦之前,您需要多少成员? – 2011-01-25 10:59:57
由于可以命名数组/矢量元素,因此可以获得地图/字典内置的一些属性。
x <- c(apple = 1, banana = 99, "oranges and lemons" = 33)
x["apple"]
x[c("bananas", "oranges and lemons")]
x[x == 99]
(如果你的价值观是不同类型的,那么你就需要使用list
,而不是一个向量的。)
哈希封装前述确实增加了一个小的开销,但确实提供了一个灵活,直观访问地图/散列/字典的方法。来自其他语言的用户应该很容易理解它。
如果列表中包含少量元素,则列表是最佳解决方案。 (< 200左右)。
如果你绝对不能容忍一点开销,并且你不想要灵活,直观的方法,那么最好使用环境。
散列包在大多数情况下是最好的。
C-
您将Python术语与C++混淆了。 *`dict` *是存储(键,值)对的数据结构。 *`map(somefn,someseq)`*是一个函数,它将``somefn` *应用于*`someseq` *中的每个元素。 – smci 2011-12-05 22:38:55