2

data.table を使用して、データ テーブル、数式オブジェクト、および文字列を引数として取り、複数のモデル オブジェクトを作成して格納する関数を作成しようとしています。

myData <- data.table(c("A","A","A","B","B","B"),c(1,2,1,4,5,5),c(1,1,2,5,6,4))
## This works.
ModelsbyV1 <- myData[,list(model=list(lm(V2~V3)),by=V1)]

##This does not.
SectRegress <- function (df,eq,sectors) {
  Output <- df[,list(model=list(lm(eq))),
             by=sectors]
  return(Output)
}

Test <- SectRegress(myData,formula(V2~V3),sectors="V1")
##Error in eval(expr, envir, enclos) : object 'X' not found

関数に df を添付しようとしました。しかし、それはタイプごとにグループ化する機能を無効にします。関数内の colnames(df) に「X」が含まれています。私は困惑しています。

4

1 に答える 1

2

環境内で評価する必要があります.SD(lmそれ以外の場合は V2 と V3 を「見る」ことができないため):

SectRegress <- function (df,eq,sectors) {
    Output <- df[, list(model=list(lm(eq, .SD))), by=sectors]
    return(Output)
}
Test <- SectRegress(myData,formula(V2~V3),sectors="V1")
于 2013-04-26T09:14:15.377 に答える