R data.table不起作用:dt [,literal_column = variable1_as_string == variable1_as_string]

时间:2017-07-05 16:43:43

标签: r data.table

我猜我的问题可以归结为:如何在R data.table行的RHS上将列名作为参数(在变量中)而不是文字?

我的示例问题:

这有效:

input_table[, temp_logical := 
              input_table[,ID_lag_0] == 
              input_table[,ID_lag_1]]

这(第1部分)有效:

# ... K > 0 at this point
ID_shifted_newcol_names = paste("ID_lag_", 0:K, sep = "")    

input_table[, eval(ID_shifted_newcol_names[1]) := ID] #lag 0 element
for(k in 1:K){ #elements with lag 1...k
    input_table[, eval(ID_shifted_newcol_names[k+1]) := shift(ID, type = "lag", n = k)]
}

到目前为止一直很好,所以下面的LHS应该按预期工作,RHS必须有问题,这(第2部分)不起作用:

#now test if lagged and previous ID row are different
for(k in 1:K){

input_table[, temp_logical := 
                  eval(input_table[,ID_shifted_newcol_names[k]) == 
                  eval(input_table[,ID_shifted_newcol_names[k+1]) # always F
}

结果总是F;我猜这是因为比较两个字符串的eval而不是两个不同名称的值。

现在我尝试将eval(和没有eval)封装到'as.name','as.symbol','deparse(substitute(...))'中,但无法使其工作。

0 个答案:

没有答案