我是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