R: установить и выбрать значения на основе меток - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть функция, которую я хочу запустить на данных, и выбранные данные зависят от выбора пользователя (Shiny). Например, рассмотрим это:

dumb_input = любое из следующих значений ("engli sh", "spani sh", "french", "german")

Итак, я Я надеюсь получить доступ к различным данным в зависимости от выбора языка. Каков наилучший способ настроить это? У меня есть код ниже с использованием DataFrame, но я думаю, что это, вероятно, неэффективно:

#objective: get the name 'arthur' when 'english' is selected
langs = c("english", "spanish", "french", "german")
names = c("arthur", "pablo", "antoine", "hans")
data_names = data.frame(langs, names, stringsasfactors = FALSE)

data_names[data_names[1]==dumb_input,] <--- this obviously is still a dataframe giving us ["english", "arthur"] so we go further
as.character(data_names[data_names[1]==dumb_input,][2]) #returns "arthur"

Итак, есть ли лучший способ сделать это? Я чувствую, что должно быть. Можно ли это сделать и с другой структурой R, такой как список?

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Если вы просто хотите names на основе dumb_input, вы можете использовать match.

dumb_input <- 'french'
data_names$names[match(dumb_input, data_names$langs)]
#[1] "antoine"

Или с помощью ==

data_names$names[data_names$langs == dumb_input]

Помните, что R чувствителен к регистру при построении кадра данных, который вы, вероятно, намеревались использовать:

data_names = data.frame(langs, names, stringsAsFactors = FALSE)
0 голосов
/ 19 апреля 2020

Я обнаружил, что библиотека ha sh работает нормально на этом:

#objective: get the name 'arthur' when 'english' is selected
langs = c("english", "spanish", "french", "german")
names = c("arthur", "pablo", "antoine", "hans")
data_names_hash = hash (keys = langs, values = names)

data_names_hash[["german"]] 
#[1] hans
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...