解决R速度太慢问题

R的速度慢一直被人诟病,最近做一个比较大的dataset的分析,跑得实在太慢,发现症结是R的data frame的index太慢:

以下为测试:

gene_list = 1:100000
eQTL_mat = matrix(nrow = length(gene_list), ncol = 7) # 创建一个matrix
eQTL_df = as.data.frame(matrix(nrow = length(gene_list), ncol = 7)) # 创建一个data frame
eQTL_list = replicate(length(gene_list), list()) # 创建一个list

try_func = function() return(1:7)
# test eQTL
system.time(
        sapply(gene_list, function(x) return (try_func()))
)

 ### user system elapsed

 ### 0.108 0.001 0.108

system.time(
        for (gene_ind in 1:length(gene_list)){
                eQTL_mat[gene_ind, ] = try_func()
        }
)


### user system elapsed

 ### 0.137 0.000 0.138


system.time(
for (gene_ind in 1:length(gene_list)){ eQTL_df[gene_ind, ] = try_func() } )

  ### user system elapsed 

  ### 90.623 165.868 259.065


system.time(
        for (gene_ind in 1:length(gene_list)){
        eQTL_list[[gene_ind]] = 1:7
        }
)

  ### user system elapsed
  ### 0.089 0.000 0.090

 

结果看到了吗? 太震精了!data frame真的不适合大数据!

转载于:https://www.cnblogs.com/foreverycc/p/4731629.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值