使用带粘贴命令的i在R中的数据表中设置数据

时间:2015-01-30 21:16:52

标签: r data.table

我有以下数据表DT1,它具有年度值:

        Var1        Var2
NORM_FACTOR_2014    1.026
NORM_FACTOR_2015    0.781

我希望根据我在脚本中作为年份参数传递的年份获取Var2值。所以说,如果我在2014年= 2014年运行,那么我显然应该将Var2 = 1.026存储在我的变量中。为此,我试图使用粘贴功能,但它不起作用。这是我正在尝试的:

  

DF< - DT1 [Var1 == get(paste0(“NORM_FACTOR _”,Year)),Var2]

 Error in get(paste0("NORM_FACTOR_", Year)) : 
 object 'NORM_FACTOR_2014' not found

但是当我这样做的时候:

  

DF< - DT1 [Var1 ==“NORM_FACTOR_2014”,Var2]

     

DF       [1] 1.026

我正在获得价值。我不知道我做错了什么?

解决方案:我得到了这个解决方案,所以它在没有获取功能的情况下工作:

  

DF< - DT1 [Var1 == paste0(“NORM_FACTOR _”,Batch_Year),Var2]

我不知道为什么我还在使用get()。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

我认为你的意思是这样做:

DF <- DT1[DT1$Var1 == paste0("NORM_FACTOR_", Year), "Var2"]

我使用DT1$Var1和“Var2”而非Var1,因为我之前没有使用过attach(DT1)

修改

替代:

DF <- DT1$Var2[DT1$Var1 == paste0("NORM_FACTOR_", Year)]

使用正则表达式:

DF <- DT1$Var2[grep(Year, DT1$Var1)]

答案 1 :(得分:1)

怎么样

extract<-DT1[substr(Var1,13,16)==Year,Var2]

这基本上是@Marat Talipov建议的,更像是

DT1[,yr:=substr(Var1,13,16)]
extract<-DT1[yr==Year,Var2]