R-是否在数据框中的变量之间动态切换?

时间:2018-08-26 22:28:40

标签: r

在美国,我有一个数据框,其中包含许多邮政编码和“ 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中有很多条目,是一个不起眼的入门者)。有没有办法使用变量来设置开关功能?否则,还有其他人可能可行吗?

1 个答案:

答案 0 :(得分:3)

首先创建向量place.nameszip.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"