2015-05-27 40 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。