如何有效地更改 R 中参数的名称
How to efficiently change names of arguments in R
我的代码使用此代码显示不同状态下的地图:
library(maps)
map("state", c("Virginia", "Maryland"), interior = FALSE)
map("state", boundary = FALSE, col="black", add = TRUE)
我想更改 c("Virginia", "Maryland) 以使用我创建的变量 state = c('VA', 'MD') 以便我可以更改稍后在代码中显示哪些状态。有没有一种方法可以使 c(state) 代替 c("Virginia", "Maryland") 除了蛮力的说法
if (state == 'VA') state = Virginia
if (state == 'MD') state = Maryland
#and so on
所以我不必为每个状态编写代码行?
内置州名和缩写向量。如果你有
state = c('VA', 'MD')
你可以用
得到名字
state.name[match(state, state.abb)]
# [1] "Virginia" "Maryland"
如果没有内置列表(我在阅读其他答案之前就这样做了:-),您可以轻松地抓取所有缩写,因此您不需要自己编写代码。然后制作一个键值列表
library(XML)
url <- "http://state.1keydata.com/state-abbreviations.php"
abbrevs <- readHTMLTable(url)[[2]]
key <- with(abbrevs[2:nrow(abbrevs),],
setNames(as.character(unlist(abbrevs[2:nrow(abbrevs),c(1,3)])),
as.character(unlist(abbrevs[2:nrow(abbrevs),c(2,4)]))))
head(key)
# AL AK AZ AR CA CO
# "Alabama" "Alaska" "Arizona" "Arkansas" "California" "Colorado"
state <- c("VA", "MD")
key[state]
# VA MD
# "Virginia" "Maryland"
我的代码使用此代码显示不同状态下的地图:
library(maps)
map("state", c("Virginia", "Maryland"), interior = FALSE)
map("state", boundary = FALSE, col="black", add = TRUE)
我想更改 c("Virginia", "Maryland) 以使用我创建的变量 state = c('VA', 'MD') 以便我可以更改稍后在代码中显示哪些状态。有没有一种方法可以使 c(state) 代替 c("Virginia", "Maryland") 除了蛮力的说法
if (state == 'VA') state = Virginia
if (state == 'MD') state = Maryland
#and so on
所以我不必为每个状态编写代码行?
内置州名和缩写向量。如果你有
state = c('VA', 'MD')
你可以用
得到名字state.name[match(state, state.abb)]
# [1] "Virginia" "Maryland"
如果没有内置列表(我在阅读其他答案之前就这样做了:-),您可以轻松地抓取所有缩写,因此您不需要自己编写代码。然后制作一个键值列表
library(XML)
url <- "http://state.1keydata.com/state-abbreviations.php"
abbrevs <- readHTMLTable(url)[[2]]
key <- with(abbrevs[2:nrow(abbrevs),],
setNames(as.character(unlist(abbrevs[2:nrow(abbrevs),c(1,3)])),
as.character(unlist(abbrevs[2:nrow(abbrevs),c(2,4)]))))
head(key)
# AL AK AZ AR CA CO
# "Alabama" "Alaska" "Arizona" "Arkansas" "California" "Colorado"
state <- c("VA", "MD")
key[state]
# VA MD
# "Virginia" "Maryland"