j
必要がない場合でも、data.table 列にアクセスする習慣を身につけました。
require(data.table)
set.seed(1); n = 10
DT <- data.table(x=rnorm(n),y=rnorm(n))
frm <- formula(x~y)
DT[,lm(x~y)] # 1 works
DT[,lm(frm)] # 2 fails
lm(frm,data=DT) # 3 what I'll do instead
lm
グローバル環境で変数を検索する必要があるため、#2が機能すると予想DT
していました...#2のようなものを機能させるエレガントな方法はありますか?
この場合、lm
「データ」引数をとる を使用しているので、#3 は問題なく動作します。
編集。これが機能することに注意してください:
x1 <- DT$x
y1 <- DT$y
frm1 <- formula(x1~y1)
lm(frm1)
そしてこれも:
rm(x1,y1)
bah <- function(){
x1 <- DT$x
y1 <- DT$y
frm1 <- formula(x1~y1)
lm(frm1)
}
bah()
EDIT2。ただし、これは失敗し、@eddiの答えを示しています
frm1 <- formula(x1~y1)
bah1 <- function(){
x1 <- DT$x
y1 <- DT$y
lm(frm1)
}
bah1()