2017-03-05 3 views
1
私は(それは非常に便利いないようですが、それは動作するはずです。)

エラー: `callback`は、二つ以上の引数を持っている必要があります - readr

私はreadrとdplyrを使用していますRを介してsqliteのデータベースを作成しようとしています

パッケージ。私は巨大なデータセットを持っているとして、私はread_delim_chunkedを経由してデータセットを分割しようとすると、コールバック関数を呼び出しています私が書いた:read_delim_chunkedを呼び出すとき

modifier<-function(chunk){ 
    result<-cbind(chunk %>% 
     filter(X1=="T") %>% 
     select(X2) %>% transmute(date=parse_date_time2(X2, orders = "%Y-%m-%d %H:%M:%S")), 
     chunk %>% 
     filter(X1=="U") %>% 
     select(X2) %>% transmute(str_sub(X2, 20)), 
     chunk %>% 
     filter(X1=="W")%>% 
     select(X2)) 
    names(result)<-c("time", "user", "tweet") 
    db_insert_into(con=my_db$con, table="my_fav_table", values=result) 
} 

はしかし、:

read_delim_chunked(file="/datadrive/tweets2009-07.txt", 
        chunk_size = 99999, 
        callback = modifier, 
        delim = "\t", 
        escape_double = FALSE, 
        col_names = FALSE, 
        trim_ws = TRUE, 
        skip = 1) 

私はこの奇妙なエラーを取得しています:

Error: callback must have two or more arguments

第2引数には何が渡される必要がありますか?

おかげ

+0

第2引数を追加して何が渡されるのかを見て、デバッガで実行してみてください。ここにいくつかのヒントがありますか?DataFrameCallback – Spacedman

答えて

0

SideEffectChunkCallbackというクラスへのコールバックのデフォルト。 。

receive = function(data, index) { 
    result <- private$callback(data, index) 
    private$cancel <- identical(result, FALSE) 
} 

それは、アウトは、現在のデータがある。この(Git)

R6method(callback, "receive")(out, pos); 

のように呼び出されます:このクラスは、それがチャンクが読み込まれるたびに呼び出される受信と呼ばれる機能が含まれているこれは、関数定義(Git)ですframe chunkとposは現在のチャンクが始まるファイル内の行番号です。私はなぜ彼らが戻ってインデックスを渡す(それは使用されていない)とあなたのコールバック関数を強制的にパラメータを持っているか分からない。私はちょうどうまく動作するこのような私のコールバック関数にダミー変数を追加しました。

myCallBackFunction <- function(dfChunk, dummyVar){ 
関連する問題