我有一个包含y
和x
列的data.table,我想将拟合的值分配给data.table中的一列。所以我尝试了以下内容:
q <- quote(predict(lm(y ~ x)))
dt[, predict(lm(y ~ x))] # works
dt[, eval(q)] # also works and gives the same result as the line above
dt[, fitted := predict(lm(y ~ x))] # correctly creates a column with fitted values
dt[, fitted := eval(q)] # breaks
Error in eval(expr, envir, enclos) : object 'y' not found
似乎有关quote
和eval
的行为不一致,具体取决于是否创建了新列。我错过了什么吗?