zoukankan      html  css  js  c++  java
  • 解决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真的不适合大数据!

  • 相关阅读:
    【3】网站搭建:分页功能
    mapserv和mapserv.exe的区别
    WMS请求GetCapabilities,变成下载mapserv.exe解决办法
    get和post的区别
    实现ajax异步请求
    Thinkphp3.2 Widget的扩展
    Thinkphp3.2 路由是使用
    Thinkphp3.2 TagLib的使用
    Thinkphp下实现Rbac
    Thinkphp下实现分页
  • 原文地址:https://www.cnblogs.com/foreverycc/p/4731629.html
Copyright © 2011-2022 走看看