虽然,上学期有三门课程涉及R语言,其中两门专门讲有关R语言的知识,但是,个人认为目前还是R语言的初学者。
        之前使用java+R语言编写的实验,勉勉强强还能忍受内存消耗和运行时间,然而,当我前几天想要扩大数据集的时候,才发现,这根本不是换一套数据,改一个范围如此简单的事情。由于电脑配置不行,根本存不下所需的矩阵,java 虚拟机一直爆出内存超限的错误。于是把能降低内存的方法都加上去了,比如重复利用变量,double全改float,能用short类型的就不用int类型,能用邻接表的不用邻接矩阵等,总算是解决了java内存不够的问题。由于当时数据规模较小,为图编码方便,写了很多的邻接矩阵,导致数据量变大的时候,运行时间令人难以忍受(我晚餐都吃完了,运行还没结束)。由此也得出一个教训:在实验设计时,应当考虑到数据规模变大导致的时间和空间的消耗。能尽量节省空间就节省,能尽量降低时间复杂度就多花些时间写代码,把时间复杂度降下来。
        之前的小规模实验,按照实验步骤,在R中用自己易于理解的方式进行了编码, 由于R是初学,之前用的较多的是C与C++的混合编程,所以即使是在编写R中,也有许多C与C++的痕迹。矩阵运算基本采用for循环,数据量一大,导致时间难以承受。无奈,上网搜之,原来R有自己的矩阵运算的式子(此时的内心是崩溃的,之前花了那么长时间写的代码,还不如简短的几句话)。对之前的代码怒删之。
虽然,实验效果图还没有出来,还是想花点时间,把实验中用到的矩阵运算和数据读写在此记录一下,一来,给自己长点记性(为什么之前不想着去搜一搜!);二来,以后需要用R解决矩阵运算问题时,可以直接翻看此文,节省网上甄别答案的时间;第三,也可以给能看到我空间的好友在以后如果需要使用R语言进行编程时,提供一个参考。

首先是向量: 若A = [1,2,3,4]   B=[6,7,8,9] 则 A%*%B = [1*6+2*7+3*8+4*9]   即数学上的 向量点积,得到一个数
                                                                        A*B = [6,14,24,36]  即向量对应位置相乘,得到的是一个向量
                                                                        A%o%B = C(4x4 的矩阵) 即数学上的  向量外积  得到一个矩阵 C1,2 表示A1 * B2
然后是矩阵: 若 A,B为矩阵 则 t(A) 表示矩阵A的转置
                                                    A*B 表示矩阵A和B对应位置相乘,还是一个矩阵,要求A与B的规模相同(等行和等列)
                                                    A%*%B 表示矩阵A和B相乘, 即数学意义上的两个矩阵相乘,要求前者列数等于后者行数 得到一个数
                                                    A/B 表示矩阵A和B对应位置相除
在R中,传统的四则运算+-*/ 运用在向量和矩阵中,均表示对应位置元素的四则运算

多么简单的代码,关键是速度还挺快。哭TT。

在解决了由于矩阵运算带来的时间消耗难以承受的问题后,发现将数据读写到文档,也是耗时过长的步骤。之前上课以及网上广泛传播的读写操作,数据量一大,就显得力不从心。上网搜之,找到两个解决办法。分别是:readr包和feather包。每个包就简单举一个实验中用到的例子来加以说明。
        reader包里面的read_table, 是的read与table采用"_"进行连接,与教材上的仅一个链接符号的差别。但是读取速度快了不止一倍。缺点是,好像只能读取以空格作为分隔符的数据(哎,我为啥要用“\t”)作为分隔符呢,好气的是,read_csv读txt文件时居然也只认空格。 另外,reader包里没有 write_table函数 (/无奈)。
        feather包里有一个 read_feather函数,读取文件的速度也很快,读取的数据查看类型是一个有3个类型的东西,好像是数据库吧,不记得了,第三个是数据框格式。所以在实验中,我一般读取完都用as.data.frame先转换成数据框格式再进行后续操作。还有一个与之对应的write_feather函数,写入文档的时间比write.table不知快到哪里去了。不过,对比write_feather和write.table,前者的文档要更大一点,打开来看,居然还是乱码,不过不影响通过read_feather去读取它,所以也就不管了。另外,write_feather只能写data.frame类型的数据,其他数据需要转化成数据框格式才行,这也消耗了一定的时间。
         虽然这两个包都有不足之处,但时间消耗明显要比传统的数据读写低,所以,我把之前写的基本都采用了read_feather 和 write_feather形式,只是这样存入文档的数据不能直接使用记事本打开编辑。

从一定意义上说,R确实强大,R能几乎占用我电脑的全部内存,对于向量与矩阵的运算,R也要明显优于java。以后能不用for循环就不写for循环。R跑for循环简直慢的要死。
          个人认为,R的强大,在于有许多人无私的奉献,各种R包,各种类库,丰富完善了R的功能,也方便了像我一样苦苦挣扎着做实验的人。在现在这个时代,编程正在变得越来越简单,你会发现,你所困惑的,早已有人在你之前解决。向伟大的科学家致敬!

R语言快速读写与矩阵运算相关推荐

  1. R 语言快速构建信用评分卡模型---scorecard包

    前言 R 语言快速构建机器学习,基于某大佬的scorecard包. # github主页 - R版: http://github.com/shichenxie/scorecard # 加载[data. ...

  2. R语言文本文件读写(txt/csv/xlsx)

    这篇文章主要介绍了R语言文本文件读写(txt/csv/xlsx),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本文主要介绍了R ...

  3. R语言快速学习第二部分(有其他语言基础)

    文章目录 空值NA 与 缺失值NULL 向量(vector) 列表(list) 矩阵(matrix) 数组(array) 因子(factor) 数据框(data.frame) R语言数据对象包括以下几 ...

  4. R语言快速跳转代码,分割代码块语法

    R语言分割代码块快速跳转 下面展示分割代码的R语言语法. ###第一块代码#### shapiro.test(dat12$values)###第二块代码#### t.test(values~dose, ...

  5. R语言快速制作文献中三线表--table1表格

    生物医学.流行病学和相关领域的标准做法是,大多数期刊文章的第一个表,即"table1",是根据不同程度分层的研究人群基本特征的描述性统计表.想想我们之前是不是对每个变量单独进行统计 ...

  6. 用计算机图形学画字母,r 语言快速出图——单因素方差带字母显著性标记

    相信带字母的显著性标记图大家都不会陌生,在许多文献中多可以看到类似的图.首先来看看它长啥样 用不同的字母来表示显著性,字母相同不显著 不管是在月末组会汇报,还是自己写文章过程中都会用到.今天就一起来学 ...

  7. R语言快速学习第一部分(有其他语言基础)

    文章目录 注意事项 1.输出内容 输出到控制台: 输出到文件 2.数字运算符 数字运算符 赋值 3.流程控制 if 判断语句 switch 判断语句 循环语句 4.函数 注意事项 R 语言区分大小写, ...

  8. R语言快速运行脚本程序

    在之前打开R语言的脚本程序时,一直是 文件–>运行R脚本文件,一直认为还有更加简单的方法,经过查询,发现直接用语句运行R文件的方法如下: setwd("D:/workspace/R&q ...

  9. 【0基础强力推荐】R语言快速入门

    文章目录 前言 一.R语言入门 1.基本语法 2.R包的安装 3.R包的使用 4.获取帮助 5.内置数据集 6.向量 7.向量索引 8.向量运算 9.矩阵 10.因子 11.数据框 12.缺失值 13 ...

最新文章

  1. windows与linux下的\r\n
  2. UITextFile
  3. 回归Dos操作的快感,进入PowerShell世界 (转)
  4. python用字典编写购物程序_Python编写购物小程序
  5. 作者:朱扬勇,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  6. 中国游戏大数据:市场规模全球第一,直播已进入黄金期
  7. 文件操作,读文件、写文件、获取文件长度、删除文件、判断文件格式等。
  8. 程序员面试金典——11.2变位词排序
  9. 使用ppmap检测和利用XSS漏洞
  10. adb shell settings(系统服务:settings)
  11. Android 软件行为监控系统 的原理 主要是利用binder机制原理添加一个filter
  12. 程序语言的自我意识与仿他意识
  13. 微信小程序自定义loading
  14. 手势估计- Hand Pose Estimation
  15. 倒在转“码”路上的文科生
  16. mysql上机实验报告_数据库上机实验7实验报告.doc
  17. 光伏扶贫项目指标下达 如何严把光伏质量关?
  18. caffe的concat层
  19. AUTOSAR NvM 基础篇(三)
  20. python 编码规范-命名规范

热门文章

  1. 点我一下,你将获得排查性能问题的超能力~
  2. 没有免费午餐定理No Free Lunch Theorem
  3. 软件测试 流程有哪些
  4. 使用wvdial启动ppp协议拨号上网
  5. 【优化】拉格朗日(Lagrange)乘子法超简说明
  6. struct sysinfo 用法
  7. Java中的魔法值介绍及解决办法
  8. 福建师范大学2022年2月课程考试《形势与政策》作业考核试题
  9. NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台
  10. CAPP集成化工艺设计与管理系统