data.tables
,需要使用&
操作将它们的列成对合并。组合由grid
决定(将dt1 column1与dt2 column2等结合使用)现在,我正在使用mclapply
循环,当我运行完整的数据集时,脚本将花费数小时。我尝试将数据转换为矩阵并使用矢量化方法,但这花费了更长的时间。有没有更快和/或更优雅的方式来做到这一点?
mx1 <- replicate(10, sample(c(T,F), size = 1e6, replace = T)) # 1e6 rows x 10 columns
mx1 <- as.data.table(mx1)
colnames(mx1) <- LETTERS[1:10]
mx2 <- replicate(10, sample(c(T,F), size = 1e6, replace = T)) # 1e6 rows x 10 columns
mx2 <- as.data.table(mx2)
colnames(mx2) <- letters[1:10]
grid <- expand.grid(col1 = colnames(mx1), col2 = colnames(mx2)) # the combinations I want to evaluate
out <- new_layer <- mapply(grid$col1, grid$col2, FUN = function(col1, col2) { # <--- mclapply loop
mx1[[col1]] & mx2[[col2]]
}, SIMPLIFY = F)
setDT(out) # convert output into data table
colnames(out) <- paste(grid$col1, grid$col2, sep = "_")
对于上下文,此数据来自基因表达矩阵,其中1行= 1个单元格
假设我有两个大的data.tables,需要使用&操作将它们的列成对组合。组合由网格决定(将dt1 column1与dt2 column2等结合在一起)右...
mapply
的情况下直接完成:只需确保with
参数为FALSE
即: