精华内容
下载资源
问答
  • R语言运算速度太慢怎么解决? 数据10000行,350列,用随机森林建模做变量筛选,结果用randomforest()运行了两小时还没跑出来。电脑配置10核,内存16GB,虚拟内存设置100GB,结果查看CPU利用率只有8%(还是所有后台...
  • 提升R语言运算效率的11个实用方法 众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。有许多种方法可以提升你的代码运算效率,但或许你更想了解运算效率能得到多大的提升。本文将介绍几种...

    提升R语言运算效率的11个实用方法

    众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。有许多种方法可以提升你的代码运算效率,但或许你更想了解运算效率能得到多大的提升。本文将介绍几种适用于大数据领域的方法,包括简单的逻辑调整设计、并行处理和Rcpp的运用,利用这些方法你可以轻松地处理1亿行以上的数据集。

    让我们尝试提升往数据框中添加一个新变量过程(该过程中包含循环和判断语句)的运算效率。下面的代码输出原始数据框:

    # Create the data frame

    col1 <- runif (12^5, 0, 2)

    col2 <- rnorm (12^5, 0, 2)

    col3 <- rpois (12^5, 3)

    col4 <- rchisq (12^5, 2)

    df <- data.frame (col1, col2, col3, col4)

    逐行判断该数据框(df)的总和是否大于4,如果该条件满足,则对应的新变量数值为’greaterthan4’,否则赋值为’lesserthan4’。

    本文中所有的计算都在配置了2.6Ghz处理器和8GB内存的MAC OS X中运行。

    1.向量化处理和预设数据库结构

    循环运算前,记得预先设置好数据结构和输出变量的长度和类型,千万别在循环过程中渐进性地增加数据长度。接下来,我们将探究向量化处理是如何提高处理数据的运算速度。


    2.将条件语句的判断条件移至循环外

    将条件判断语句移至循环外可以提升代码的运算速度,接下来本文将利用包含100,000行数据至1,000,000行数据的数据集进行测试:


    3.只在条件语句为真时执行循环过程

    另一种优化方法是预先将输出变量赋值为条件语句不满足时的取值,然后只在条件语句为真时执行循环过程。此时,运算速度的提升程度取决于条件状态中真值的比例。

    本部分的测试将和case(2)部分进行比较,和预想的结果一致,该方法确实提升了运算效率。


    4.尽可能地使用 ifelse()语句

    利用ifelse()语句可以使你的代码更加简便。ifelse()的句法格式类似于if()函数,但其运算速度却有了巨大的提升。即使是在没有预设数据结构且没有简化条件语句的情况下,其运算效率仍高于上述的两种方法。


    5.使用 which()语句

    利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。


    6.利用apply族函数来替代for循环语句

    本部分将利用apply()函数来计算上文所提到的案例,并将其与向量化的循环语句进行对比。该方法的运算效率优于原始方法,但劣于ifelse()和将条件语句置于循环外端的方法。该方法非常有用,但是当你面对复杂的情形时,你需要灵活运用该函数。


    7.利用compiler包中的字节码编译函数cmpfun()

    这可能不是说明字节码编译有效性的最好例子,但是对于更复杂的函数而言,字节码编译将会表现地十分优异,因此我们应当了解下该函数。


    8.利用Rcpp

    截至目前,我们已经测试了好几种提升运算效率的方法,其中最佳的方法是利用ifelse()函数。如果我们将数据量增大十倍,运算效率将会变成啥样的呢?接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。

    下面是利用C++语言编写的函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。


    9.利用并行运算

    并行运算的代码:


    10.尽早地移除变量并恢复内存容量

    在进行冗长的循环计算前,尽早地将不需要的变量移除掉。在每次循环迭代运算结束时利用gc()函数恢复内存也可以提升运算速率。http://www.cda.cn/view/17597.html

    11.利用内存较小的数据结构

    data.table()是一个很好的例子,因为它可以减少数据的内存,这有助于加快运算速率。


    总结

    方法:速度, nrow(df)/time_taken = n 行每秒

    原始方法:1X, 856.2255行每秒(正则化为1)

    向量化方法:738X, 631578行每秒

    只考虑真值情况:1002X,857142.9行每秒

    ifelse:1752X,1500000行每秒

    which:8806X,7540364行每秒

    Rcpp:13476X,11538462行每秒

    转载于:https://www.cnblogs.com/purple5252/p/11189791.html

    展开全文
  • R语言的并行计算可以用parallel和foreach包 加快R运行速度还可以使用cmpfun()函数即字节码编译器 再者就是在R中调用C或C++ 同时还可以利用Rprof()来寻找代码的瓶颈 利用分块或者R包来管理内存 转载于:...

    在R中获得快速运行代码的方法

    • 使用向量化运算
    • R语言的并行计算可以用parallel和foreach包
    • 加快R运行速度还可以使用cmpfun()函数即字节码编译器
    • 再者就是在R中调用C或C++
    • 同时还可以利用Rprof()来寻找代码的瓶颈
    • 利用分块或者R包来管理内存

    转载于:https://www.cnblogs.com/xihehe/p/8318919.html

    展开全文
  • R语言 矩阵运算

    千次阅读 2020-04-03 18:54:33
    R语言中有丰富的矩阵运算函数,包括四则运算、对矩阵各行列的求和、对矩阵各行列求均值、转置等。下标列出了R语言中一部分常用的用于矩阵运算的函数 函数 功能 ±*/ 四则运算,要求矩阵的维数相同,对对应...

    矩阵的运算


    R语言中有丰富的矩阵运算函数,包括四则运算、对矩阵各行列的求和、对矩阵各行列求均值、转置等。下标列出了R语言中一部分常用的用于矩阵运算的函数

    函数功能
    ±*/四则运算,要求矩阵的维数相同,对对应位置的各元素进行运算
    colSums()对矩阵的各列求和
    rowSums()对矩阵的各行求和
    colMeans()对矩阵的各列求均值
    rowMeans()对矩阵的各行求均值
    t()对矩阵的行列进行转置
    det()求解方阵的行列式
    crossprod()求解两个矩阵的内积
    outer()求解矩阵的外积(叉积)
    %*%矩阵乘法,要求第一个矩阵的列数与第二个矩阵的行数相同
    diag()对矩阵取对角元素,若对象为向量,则生成以向量为对角元素的对角矩阵
    solve()对矩阵求解逆矩阵,要求矩阵可逆
    eigen对矩阵求解特征值和特征向量

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • R语言 集合运算

    千次阅读 2018-10-21 20:08:52
    R语言中的集合运算 A &lt;- 1:10 B &lt;- 1:5 C &lt;- seq(2,8,2) #求A和B的交集 union(A,B) #求A和B的并集 intersect(A,B) #A-B setdiff(A,B) #B-A setdiff(B,A) #判断A是否属于B all(A%in%B) #判断B...

    R语言中的集合运算

    A <- 1:10
    B <- 1:5
    C <- seq(2,8,2)
    #求A和B的交集
    union(A,B)
    #求A和B的并集
    intersect(A,B)
    #A-B
    setdiff(A,B)
    #B-A
    setdiff(B,A)
    #判断A是否属于B
    all(A%in%B)
    #判断B是否属于A
    all(B%in%A)
    #判断集合A和B是否相同
    setequal(A,B)
    #判断某个元素是否属于A
    is.element(2,A)
    is.element(12,A)
    or
    2 %in% A
    12 %in% A
    
    
    
    展开全文
  • r语言矩阵运算函数

    2014-09-17 13:52:03
    r语言矩阵运算函数:创建一个向量、创建一个矩阵、矩阵转置、矩阵加减、矩阵相乘、矩阵对角元素相关运算
  • [奥莱理] R语言 并行运算 (英文版) [奥莱理] Parallel R (E-Book) ☆ 出版信息:☆ [作者信息] Q. Ethan McCallum, Stephen Weston [出版机构] 奥莱理 [出版日期] 2011年11月02日 [图书页数] 126页 [图书语言...
  • R语言逻辑运算

    2019-09-25 11:01:31
    R语言包括两个逻辑值:TRUE、FALSE,其它编程语言经常称为布尔值,下面就来介绍R语言逻辑的应用。条件运算产生逻辑值> a <- 1> b <...
  • R语言的矩阵运算

    2013-01-24 21:36:34
    本文描述了使用R语言辅助矩阵运算的方法与实例
  • r语言矩阵运算_R中的矩阵运算

    千次阅读 2020-07-10 00:34:52
    r语言矩阵运算R offers extensive matrix handling capabilities. In addition to the basic operations discussed earlier, there are several advanced matrix functions that will ease your statistical ...
  • R语言矩阵运算

    万次阅读 多人点赞 2012-07-22 21:33:19
    R语言矩阵运算 主要包括以下内容:创建矩阵向量;矩阵加减,乘积;矩阵的逆;行列式的值;特征值与特征向量;QR分解;奇异值分解;广义逆;backsolve与fowardsolve函数;取矩阵的上下三角元素;向量化算子等. 1 创建...
  • #R语言# 简单运算

    2017-10-19 19:47:06
    R语言的简单运算
  • R 语言基础运算

    2021-07-13 03:19:37
    文章目录R语言特征基础命令 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如果以 .开头,第二个字符不允许是数字。 基本命令...
  • R语言集合运算

    千次阅读 2017-10-13 13:55:20
    集合运算 a b(1,2,3) c(3,4,15) 求a和c的并集 union(a,c) [1] 1 2 3 4 5 6 7 8 9 10 15 求a和b的交集 intersect(a,b) [1] 1 2 3 求a-b setdiff(a,b) [1] 4 5 6 7 8 9 10 ...
  • 逻辑运算-R语言入门

    2020-09-20 10:04:18
    逻辑运算@R语言入门 前言 R语言逻辑运算中与或的运算区别 一、逻辑运算 1.运算方式 代码如下(示例):全真结果为真,有一假结果就为假 2.运算长度不同情况’’&’’ 代码如下(示例):当向量的长度不同时...
  • R语言的基本运算

    千次阅读 2019-03-11 22:53:38
    R语言基础练习 1.基本运算 1.1 加、减、乘、除 + - * / 在赋值中可以使用=,也可以使用&lt;-. 1.2余数、整除 %% %/% 1.3 取绝对值 abs() 判断正负号sign() 1.4幂指数 ^ 平方根sqart () 1.5 以二为底的对数...
  • R语言并行运算(snow包).pdf
  • R语言 矩阵的基础运算创建矩阵矩阵合并矩阵删除矩阵进阶计算 创建矩阵 先创建一个2*5的矩阵a > x<-c(1:10) > a<-matrix(x,ncol=2,nrow=5,byrow=T) > a [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5...
  • R语言系列】R语言中矩阵运算

    万次阅读 多人点赞 2014-02-18 12:19:58
    R语言中矩阵运算 目录: 1_矩阵的生成 2_矩阵的四则运算 3_矩阵的矩阵运算 4_矩阵的分解   1_1将向量定义成数组  向量只有定义了维数向量(dim属性)后才能被看作是数组.比如: > z=1:...
  • R语言的向量化运算

    2020-12-07 17:29:39
    R语言的向量化运算 数学运算符:+,-,*,/ 比较运算符:>=,>,<,<=,!=,== 条件运算符: &,|,!,xor()x<-1:4;y<-6:9;z<-2:3 x+y [1] 7 9 11 13 x+z ##长度不一时,短的循环,且长的是短的的倍数 [1] ...
  • R语言向量的集合运算

    千次阅读 2021-04-27 15:14:46
    向量的交集用intersect(x, y) 并集用union(x, y) 差集用setdiff(x, y) 集合是否相等,用setequal(x, y), 确定元素x是否是集合y的某个元素用is.element(x, y),它等价于x %in% y.(这里x可以是一个元素,也可以是一...
  • R语言 向量排序与运算

    千次阅读 2020-04-02 19:54:10
    R语言中主要通过sort函数对向量进行排序。格式如下:         sort(x,decreasing = FALSE,na.last = NA,…) 实例:向量排序 sort函数常用参数 常用参数 参数描述 选项 ...
  • R语言快速读写与矩阵运算

    千次阅读 2018-11-05 08:27:10
    虽然,上学期有三门课程涉及R语言,其中两门专门讲有关R语言的知识,但是,个人认为目前还是R语言的初学者。  之前使用java+R语言编写的实验,勉勉强强还能忍受内存消耗和运行时间,然而,当我前几天想要扩大...
  • R语言数据对象与运算

    万次阅读 2014-01-18 00:05:41
    R语言数据对象与运算 笔记整理 2.1 数据对象及类型 R语言创建和控制的实体被称为对象(object) ls()命令来查看当前系统里的数据对象 R对象的名称必须以一个英文字母打头,并由一串大小写字母、数字或钟点组成 注意...
  • R语言︱逻辑运算

    万次阅读 2016-04-28 21:39:10
    R软件包含两个逻辑值,TRUE和FALSE。在其他编程语言中也称为布尔值(Boolean values)。布尔向量就是充满着逻辑值的逻辑向量。那么有如何的应用呢?     1、比较运算可以产生逻辑值  &gt;、&lt;、&...
  • R语言--向量运算

    2021-09-06 18:23:09
    向量与数的四则运算 +加法 -减法 *乘法 /除法 %%取余 x**y x的y次方 %/%整除运算 以加法为例 > x<-1:10 #这些都没有赋值操作 所以x值不变 > x [1] 1 2 3 4 5 6 7 8 9 10 > x+1 [1] 2 3 4 5 6 7 8 9 ...
  • 一、数学上的矩阵运算:1.生成矩阵:matrix()> a<-matrix(data = 1:16,nrow = 4) > a [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 162.矩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,578
精华内容 53,831
关键字:

r语言运算