在美国,我有一个数据框,其中包含许多邮政编码和“ city,state”的集合。因此,例如,它可能会读取(请注意,实际数据帧具有25000个观察值):
zip.codes = c(33603, 33701, 32835)
place.names = c("Tampa, FL", "Saint Petersburg, FL", "Orlando, FL")
df = data.frame(zip.codes, place.names)
我正在将其用作Shiny App的一部分。我希望用户能够选择一个邮政编码,但只能让它返回地名。因此,如果用户输入33603,则该代码将返回“ Tampa,FL”。
我尝试研究Switch函数来尝试执行此操作,但这似乎只接受硬编码的列表(这在DF中有很多条目,是一个不起眼的入门者)。有没有办法使用变量来设置开关功能?否则,还有其他人可能可行吗?
答案 0 :(得分:3)
首先创建向量place.names
和zip.codes
,然后尝试以下任一替代方法:
place.names <- as.character(df$place.names)
zip.codes <- df$zip.codes
1)匹配
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"