R - динамически переключаться между переменными в кадре данных? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть фрейм данных, в котором содержится множество почтовых индексов и "город, штат" в США.Так, например, он может читать (обратите внимание, что фактический фрейм данных имеет примерно 25000 наблюдений):

zip.codes = c(33603, 33701, 32835)
place.names = c("Tampa, FL", "Saint Petersburg, FL", "Orlando, FL")
df = data.frame(zip.codes, place.names)

Я использую это как часть блестящего приложения.Я бы хотел, чтобы пользователь мог выбрать почтовый индекс, но только чтобы он возвращал название места.Так что, если пользователь введет 33603, то код вернет «Тампа, Флорида».

Я пытался исследовать функцию Switch, чтобы попытаться сделать это, но кажется, что она принимает только жестко закодированные списки (что является своего рода нестартером с таким количеством записей в DF).Есть ли способ настроить функцию переключения с помощью переменных?Иначе, у кого-нибудь есть другая идея, которая может сработать?

1 Ответ

0 голосов
/ 27 августа 2018

Сначала создайте векторы place.names и zip.codes, а затем попробуйте любую из следующих альтернатив:

place.names <- as.character(df$place.names)
zip.codes <- df$zip.codes

1) match

place.names[match(33603, zip.codes)]
## [1] Tampa, FL

2) логическое условие

place.names[33603 == zip.codes]
## [1] Tampa, FL

3) имя поиска

v <- setNames(place.names, zip.codes)
unname(v[as.character(33603)])
## [1] Tampa, FL 

4) переключатель

L <- setNames(as.list(place.names), zip.codes)
do.call("switch", c(as.character(33603), L))
## [1] "Tampa, FL"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...