Имеет ли R 'dict', как в python, или 'map', как в c ++? - PullRequest
9 голосов
/ 25 января 2011

Я новичок в программировании на R.После проверки некоторого учебника я выбрал большинство вещей, которые мне были нужны, но одна вещь все еще отсутствует: карта структуры данных.

Все знают, имеет ли R диктат?В каких я могу хранить пары (ключ, значение)?

Спасибо !!

Ответы [ 5 ]

9 голосов
/ 25 января 2011

Да, это так, и он называется 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, для чего он стоит.

5 голосов
/ 25 января 2011

Среды также являются кандидатами, и во многих случаях лучшим вариантом.

e<-new.env(hash=T)
e$a<-1
e$b<-2

R> e$a
[1] 1

Недостатком списка является то, что это линейный поиск.

3 голосов
/ 25 января 2011

Существует пакет хэш .

2 голосов
/ 25 января 2011

Поскольку элементы массива / вектора могут быть названы, вы получаете некоторые свойства встроенной карты / словаря.

x <- c(apple = 1, banana = 99, "oranges and lemons" = 33)
x["apple"]
x[c("bananas", "oranges and lemons")]
x[x == 99]

(Если ваши значения имеют разные типы, тогда вам нужно использовать list вместо вектора.)

0 голосов
/ 02 февраля 2014

Пакет хэша, как упоминалось выше, добавляет немного накладных расходов, но предоставляет гибкие, интуитивно понятные методы доступа к карте / хэшу / словарю. Пользователям с другого языка должно быть очень легко поймать его.

Список является наилучшим решением, если список содержит небольшое количество элементов. (<200 или около того). </p>

Среду лучше всего использовать, если вы абсолютно не можете мириться с небольшими накладными расходами и не хотите гибких, интуитивно понятных методов.

Хеш-пакет является лучшим в большинстве ситуаций.

C-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...