Структура данных пары ключ-значение в R, где длина ключа больше 1 (несколько ключей на значение) - PullRequest
0 голосов
/ 17 марта 2020

Есть ли разумный способ хранения сопоставления пар ключ / значение, где ключ имеет длину> 1?

Что я знаю до сих пор

Где ключи имеют длину 1, мы можем использовать именованный список, например,

mylist <- list(a=c("apple", "alphabet", "allegro"),
               b=c("baseball", "brilliant"))


и получать доступ к значениям с помощью клавиш, например:

mylist$a
# [1] "apple"    "alphabet" "allegro" 

Но если ключи имеют длину больше 1, например, вместо из a и b, они были c('a', 'foo', 'bar'), и c('b', 'some', 'thing'), есть ли в R структура данных, которая обслуживает отображение этого множества на многие, так что любой один элементов ключ будет сопоставлен с соответствующими значениями?

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

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

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

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

Таким образом, вы можете получить список синонимов, таких как:

synonyms <- list(jargon1 = "keyword1", jargon2 = "keyword1", jargon3 = "keyword3")

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

0 голосов
/ 17 марта 2020

Что бы я сделал, это создаю новый master_list с именем всех ключей, которые он может взять.

master_list <- list(a = c('a', 'foo', 'bar'), b = c('b', 'some', 'thing'))

Теперь значения, представленные в master_list, можно ссылаться одним общим ключом в mylist.

mylist <- list(a=c("apple", "alphabet", "allegro"), b=c("baseball", "brilliant"))

Это даст минимальную общую избыточность.

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