如何提高我的 R 代码的处理时间
how to improve the processing time of my R code
我需要对数据集进行一些操作,但我的 r script (shown below) is running really slow. The data set is a dataframe 具有维度:58347 x 41350。我尝试首先 运行 下面的 R 脚本在一个更小的数据集 (58347 x 5)我花了一个小时来处理它。我想处理实际数据集会花费更长的时间。 你们知道有什么方法可以让它 运行 更快吗?
请看下面我的代码:
library("LoomExperiment")
dataset<-import("WongAdultRetina homo_sapiens 2019-11-08 16.13.loom")
m<-assay(dataset)
colsums<-colSums(m)
result<-data.frame()
for(i in seq_len(nrow(m))){
if(i%%500==0){
print(paste("i =",i))
}
for(j in seq_len(ncol(m))){
if(colsums[j]== 0){
result[i,j]<- 0
}
else {
result[i,j]<-(m[i,j]*2000)/colsums[j]
}
}
}
save(result,file="resultlocal.rda")
非常感谢。
如果不确切了解您要在此实现的目标,就很难说要做什么。不过我会努力的。
首先,您可以将data.frame
替换为data.table
。根据我的经验,使用它们要快得多。
其次,您可以创建具有指定大小的result
data.frame。例如,看起来它的大小总是 nrow(m) by ncol(m)
。所以,result = as.data.frame(matrix(nrow = nrow(m), ncol = ncol(m)))
。当然,您也可以随时将其替换为 data.table
。
指定 data.frame
的大小将为对象分配足够的内存。这样,R
就不必增长(将原始帧的内容复制到一个大一个单位的对象中,然后删除原始对象)对象来添加另一个元素。
我需要对数据集进行一些操作,但我的 r script (shown below) is running really slow. The data set is a dataframe 具有维度:58347 x 41350。我尝试首先 运行 下面的 R 脚本在一个更小的数据集 (58347 x 5)我花了一个小时来处理它。我想处理实际数据集会花费更长的时间。 你们知道有什么方法可以让它 运行 更快吗?
请看下面我的代码:
library("LoomExperiment")
dataset<-import("WongAdultRetina homo_sapiens 2019-11-08 16.13.loom")
m<-assay(dataset)
colsums<-colSums(m)
result<-data.frame()
for(i in seq_len(nrow(m))){
if(i%%500==0){
print(paste("i =",i))
}
for(j in seq_len(ncol(m))){
if(colsums[j]== 0){
result[i,j]<- 0
}
else {
result[i,j]<-(m[i,j]*2000)/colsums[j]
}
}
}
save(result,file="resultlocal.rda")
非常感谢。
如果不确切了解您要在此实现的目标,就很难说要做什么。不过我会努力的。
首先,您可以将data.frame
替换为data.table
。根据我的经验,使用它们要快得多。
其次,您可以创建具有指定大小的result
data.frame。例如,看起来它的大小总是 nrow(m) by ncol(m)
。所以,result = as.data.frame(matrix(nrow = nrow(m), ncol = ncol(m)))
。当然,您也可以随时将其替换为 data.table
。
指定 data.frame
的大小将为对象分配足够的内存。这样,R
就不必增长(将原始帧的内容复制到一个大一个单位的对象中,然后删除原始对象)对象来添加另一个元素。