如何使列名/数据框名称成为包含变量的字符串(R)

时间:2015-05-27 15:41:14

标签: r

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来运行代码。

如果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不会评估引号中的任何表达式 - 它只是打印您定义的字符串。但是,如何解决这个问题,以便字符串中可以有一个变量?

非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

以下是您的工作方式:将数据存储在列表kk中,以便第一个元素kk[[1]]kk[["tpop_13"]]提供2013年和第二个元素的数据{{ 1}}或kk[[2]]提供2012年的数据,其中包含您建议的每个元素的名称。

kk[["tpop_12"]]