让我们说我正在编写一个R脚本,从Quandl(或一系列.csv,或任何其他类型的顺序重复命令)中提取数据
St_AL <- Quandl("datalocation/_ST_AL")
St_AK <- Quandl("datalocation/_ST_AK")
St_AZ <- Quandl("datalocation/_ST_AZ")
St_AR <- Quandl("datalocation/_ST_AR")
St_CA <- Quandl("FRBC/EMPL_ST_CA")
##SEQUENCE CONTINUES FOR ALL 50 U.S. STATES, or any other sequence##
有没有更简洁的方法做到这一点,不需要50行代码?我在想,也许是一个字符串,它有50个状态名称作为值,然后将字符串值替换为循环?但我无法想出实现它的方法。这是关键吗?或其他什么?
答案 0 :(得分:5)
正如@PierreLafortune所说,您可以使用state.abb
作为状态列表,并使用lapply()
函数循环遍历每个状态:
lapply(state.abb, FUN=function(x) Quandl(paste0("datalocation/_ST_",x)))
或@RichardScriven建议:
lapply(paste0("datalocation/_ST_",state.abb), Quandl)
您可以使用以下内容将所有结果排列到一个data.frame
中
do.call(rbind, lapply(paste0("datalocation/_ST_",state.abb), Quandl))