博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R tips
阅读量:6688 次
发布时间:2019-06-25

本文共 766 字,大约阅读时间需要 2 分钟。

ctrl+l

 

为R代码提速 两条小技巧

已有 375 次阅读 2011-2-16 09:30 |个人分类:|系统分类:|关键词:R语言

一、如果需要保存数据到向量或矩阵,
首选方法是:
新建一个向量或矩阵,然后为新建向量或矩阵赋值。备选方法是:
通过连接当前向量或矩阵,以生成新的向量或矩阵。在数据量较少的情况下,上述两种方法没有明显区别,在遇到大量数据时,前者可以提高60倍效率。
小试验:
n <- 10^5
a <- NULL
#连接
system.time(for(i in 1:n){a <- c(a,1)})
#新建并赋值
b <- rep(0,n)
system.time(for(i in 1:n){b[i] <- 1})
前者耗时31.78秒,后者耗时0.44秒。
二、能避免使用圆括号的,尽量不要使用。
小试验:
f <- function(n){  for(i in 1:n){    x <- 1/(1+x)    }}
g <- function(n){    for(i in 1:n){    x <- (1/(1+x))    }}
h <- function(n){    for(i in 1:n){    x <- (1+x)^(-1)    }}
j <- function(n){    for(i in 1:n){    x <- {1/{1+x}}    }}
k <- function(n){    for(i in 1:n){    x <- 1/{1+x}    }}
x <- 1
system.time(f(10^6))
system.time(g(10^6))
system.time(h(10^6))
system.time(j(10^6))
system.time(k(10^6))
分别耗时:1.36、1.51、1.90、1.44、1.25。
整理自:

转载地址:http://krhao.baihongyu.com/

你可能感兴趣的文章
C语言版——点亮LED灯,深入到栈
查看>>
安装setuptools和pip
查看>>
C#使用BeginInvoke和EndInvoke异步下载和获取返回结果
查看>>
MII_GMII_RGMII_RMII_SMII_SSMII_TBI_RTBI
查看>>
ceph-RGW Jewel版新概念
查看>>
001-对象——基础知识
查看>>
Redis 高可用集群
查看>>
jQuery图片tab栏切换
查看>>
2.C#知识点:I/O
查看>>
ios 集成react native
查看>>
两个自定义对象List列表取交集(intersection)
查看>>
使用git克隆指定分支的代码
查看>>
gradle 项目构建以及发布maven 私服&& docker 私服构建发布
查看>>
struts2与spring集成时,关于class属性及成员bean自动注入的问题
查看>>
django数据库操作-增删改查-多对多关系以及一对多(外键)关系
查看>>
微服务概念快速了解
查看>>
Java 开源博客 Solo 2.5.0 发布
查看>>
JDK1.7源码分析01-Collection
查看>>
Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点(一)
查看>>
Android开发入门
查看>>