これは StackOverflow での最初の投稿です。私は比較的プログラミングの初心者であり、R で data.table を操作しようとしています。その速度の評判からです。
「Actions」という名前の非常に大きな data.table があり、5 つの列と数百万行の可能性があります。列名は k1、k2、i、l1、および l2 です。「States」という名前の列k1とk2にActionsの一意の値を持つ別のdata.tableがあります。
Actions のすべての行について、States と一致する列 4 と 5 の一意のインデックスを見つけたいと思います。再現可能なコードは次のとおりです。
S.disc <- c(2000,2000)
S.max <- c(6200,2300)
S.min <- c(700,100)
Traces.num <- 3
Class.str <- lapply(1:2,function(x) seq(S.min[x],S.max[x],S.disc[x]))
Class.inf <- seq_len(Traces.num)
Actions <- data.table(expand.grid(Class.inf, Class.str[[2]], Class.str[[1]], Class.str[[2]], Class.str[[1]])[,c(5,4,1,3,2)])
setnames(Actions,c("k1","k2","i","l1","l2"))
States <- unique(Actions[,list(k1,k2,i)])
したがって、data.frame を使用していた場合、次の行は次のようになります。
index <- apply(Actions,1,function(x) {which((States[,1]==x[4]) & (States[,2]==x[5]))})
data.table で同じことを効率的に行うにはどうすればよいですか?