私は3つのdata.tableを持っていますが、それぞれが正方形のグリッドでペアになる必要があります。私はグリッドスクエアの上下の三角形の上を歩きたいだけです。私はこれはJavaのような他のプログラミング言語では単純なビットだと思っていますが、Rでそれを作る方法はわかりません。誰もこれを簡単にやっていることを知っていますか?私は効率的にグリッドオブジェクトを作成するために、適切な方法を見つけることができなかったので、私はおおよそアウトピン 対角線上にある上下の三角形のペアのdata.tableを取得する方法は?
grid <- matrix((a,a), (a,b), (a,c),
(b,a), (b,b), (b,c),
(c,a), (c,b), (c,c),3,3)
:
データ
mylist <- list(
a <- data.table(
start=seq(1, by=9, len=10), stop=seq(6, by=9, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE)),
b <- data.table(
start=seq(2, by=11, len=10), stop=seq(8, by=11, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE)),
c <- data.table(
start=seq(4, by=11, len=10), stop=seq(9, by=11, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE))
)
正方形グリッド内のすべての可能な対(I手動DID)グリッドを手動で作成します。
所望の出力:
グリッドオブジェクトは、マトリックスまたはいくつかの他の表現とすることができます。これはスクラッチコードです。ここで、get.ovlpが上記のグリッド表現を返しますが、重複したペアが繰り返されたと想像してください。私の目的は、唯一の唯一の
library(data.table)
mylist <- list(a,b,c)
get.ovlp <- function(set, idx=1L) {
que <- set[[idx]]
supp <- lapply(set[-idx], function(ele_) {
ans <- data.table::foverlaps(que, ele_)
})
return(supp)
}
get.ovlp機能が繰り返さどのペアの重なりを表現グリッドオブジェクトのように起こっていることだけでおもちゃの例であるsqureグリッドの三角形の下/上段の上を歩くことで、これらの繰り返しペアを削除しています。
私は四角いグリッドの上から下三角(対角線を含む)のペアを歩いて、data.tableパッケージのfoverlaps関数を使用します。誰でもこの問題を効率的に解決するための考え方を提案できますか?ありがとうございました
ラインは有効ではありませんし、エラーを生成します。 '各データテーブルをペアにする 'とはどういう意味ですか? – nicola
@nicola:適切なグリッドオブジェクトを効率的に構築するための適切な方法が見つかりませんでした。したがって、私はちょうど私のグリッドオブジェクトがどのように手動で表されます。 – datageek
'a'、' b'、 'c'は' data.table'です。各要素に2つの 'data.table'が含まれている3x3行列が必要ですか?なぜこれが欲しいのですか?あなたは 'foverlaps'を使いたいと言っています。どのように説明できますか? 'grid'の要素だけの出力を表示できますか? – nicola