1

として編成されたデータの使用

dtl <- replicate(10,data.table(id=sample(letters,10),val=sample(10)), simplify=F)
lapply(dtl, function(x){setkey(x,'id')})

dtl[[n]]にidが存在しないdtl[[n+1]]]の行を含むデータテーブルのリストを抽出する必要があります。私はそれが次のようなものになると思います

dtl2 <- list(setdiff(dtl[[1]][['id']],dtl[[2]][['id']]),setdiff(dtl[[2]][['id']],dtl[[3]][['id']]...)

setdiffはid列のみを考慮に入れる必要がありますが、結果には各データテーブルのすべての列が含まれると予想されることに注意してください。

4

1 に答える 1

3

私はこれがあなたのためにそれをするだろうと思います:

mapply(setdiff, head(dtl, -1), tail(dtl, -1), SIMPLIFY = FALSE)

編集:あなたの新しい期待される出力で、私はまだmapply上記のように使用しますが、次の2つの変更のいずれかを使用します:

  1. setdiffに置き換えるfunction(x,y)setdiff(x$id, y$id)
  2. dtlに置き換えるids <- lapply(dtl, "[", "id")

Edit2 ::あなたはあなたが提供したコードと一致しない平易な英語の説明を追加することによってあなたの期待される出力を再び変更しました...私はあなたが今これを探していると思います:

mapply(function(x,y)y[setdiff(y$id, x$id), ],
       head(dtl, -1), tail(dtl, -1), SIMPLIFY = FALSE)
于 2012-10-01T00:52:25.310 に答える