2015-05-27 43 views
1
this.year<-2014 
x<-this.year-1 
y<-this.year-2 
x.s<-x-2000 
y.s<-y-2000 
tpop_y.s<-acs.fetch(endyear=x,span=1,geography=mystates,variable="B01003_001", col.names="DM_TPOP_x.s") 
tpop_x.s<-acs.fetch(endyear=y,span=1,geography=mystates,variable="B01003_001",col.names="DM_TPOP_y.s") 

我使用的是包acs从美国社区调查拉出数据来更新信息图表网站的变量的字符串。我希望通过在this.year中输入当前年份并拥有过去两年的代码更新数据xy来运行代码。如何使列名/数据帧的名字与它(R)

如果this.year是2015,x是2014,x.s是14,y是2013,y.s是13最终的结果我想是(对于y)处的数据帧名称tpop_13与列名DM_TPOP_13。 (对于x)数据框名称tpop_14,列名为DM_TPOP_14

代码正确拉取所需数据,但此代码返回(对于y)数据框名称tpop_y.s,列名称为DM_TPOP_y.s。 (对于x)数据框名称tpop_x.s,列名称为DM_TPOP_x.s。 我试图寻找类似的问题,发现这一个:How to print R variables in middle of String

我尝试用引号\"',x.s,'\"解决我的问题将答案,但它不工作。该代码返回(对于x)列名称DM_TPOP_...x.s...。我知道R不会评估引号内的任何表达式 - 它只会打印您定义的字符串。但是,如何解决这个问题,以便在字符串中可以存在变量?

帮助将不胜感激!

+0

您是否需要这样一个复杂的例子?我以前从来没有见过'acs.fetch',并怀疑它对于字符串和变量名称的问题很重要...... – Frank

+0

'acs.fetch'在包'acs'中找到,它不是常用的包。如果这个例子看起来很复杂,我很抱歉。这就是acs.fetch中的参数是如何工作的。 –

+0

'assign'函数可能有所帮助,请看这里:http://stackoverflow.com/questions/5510966/create-a-variable-name-with-paste-in-r –

回答

0

这里是你如何工作的:将数据存储在列表中kk,使第一要素,kk[[1]]kk[["tpop_13"]],给出了2013年和第二个元素,kk[[2]]kk[["tpop_12"]]数据给出的数据,2012年,随着名按照您的建议每个元素。

wa=geo.make(state="WA") 
kk<-lapply(c(x,y),function(i){ 
    acs.fetch(endyear=i,span=1,geography=wa,variable="B01003_001", col.names=paste0("DM_TPOP_",i-2000)) 
    }) 


names(kk)<-paste0("tpop_",c(x-2000,y-2000)) 
    kk 
     $tpop_13 
    ACS DATA: 
    2013 ; 
     Estimates w/90% confidence intervals; 
     for different intervals, see confint() 
       DM_TPOP_13 
    Washington 6971406 +/- 0 

    $tpop_12 
    ACS DATA: 
    2012 ; 
     Estimates w/90% confidence intervals; 
     for different intervals, see confint() 
       DM_TPOP_12 
    Washington 6897012 +/- 0 
0

您可以使用像pastepaste0sprintf这样的函数从字符串常量和变量构造字符串。 gsubfn软件包中还有一些功能可用于执行像字符串插值这样的Perl。