我正在处理R中的一些大数据:
我有一个正态分布随机数的向量,长度约为6400 * 50000,我需要对这个向量中的每4个元素求和,得到一个较小的元素。
在R中有没有有效的方法呢?
我的想法到现在为止:
示例代码:
library(parallel)
library(RcppZiggurat)
library(doParallel)
library(foreach)
coreNums<-detectCores()
N1=6400
M=4
N2=N1/M
cl<-makeCluster(getOption("cl.cores", coreNums))
registerDoParallel(cl)
vector1<-zrnorm(N1*K)
vector2=foreach(i=1:(N2*K)) %dopar% {sum(vector1[M*(i-1)+1:M*i])}
vector2=unlist(vector)
答案 0 :(得分:2)
我认为bottom
是您正在寻找的功能。
colSums
在我看来,这个任务对于并行化来说太简单了。 另外,我对矩阵大小没有任何问题。
如果您想使用更少的内存,以下代码在vector1 = rnorm(1000*50000)
dim(vector1) = c(10, length(vector1)/10)
vector2 = colSums(vector1)
中的10,000个值的部分内容中执行相同操作。
vector1