虽然大学阶段曾经学过C++, matlab等编程,但是真的几乎完全还给了老师~

所以,我一直将R 作为自己真正学习的第一门语言。我从2012年初在来美国的第二个rotation中开始接触到了R。当时不要说编程,就是对计算机都是了解极少。买计算机的时候开始把计算机的配置什么都了解,后来又自己买内存升级自己的小本。再后来计算机出了点问题,拆开机箱,也曾拆开笔记本。扯远了~~~~~

其实现在想想当时对计算机真的就是很白痴的。第一个rotation过完以后,算是对R入门了。于是开始写更多的代码。哪个时候写个一百多行的脚本便觉得不得了了~~~~ 其实现在看来,当时那些脚本就是把一行一行的命令堆起来,实在不能称为编程!其实包括我实验室中以前做我这块东西的姐姐,甚至那些做生统的老师,他们写的代码也都是结构性很差的,只能称之为代码,而不是编程。这恐怕是生物统计和生物信息的一大区别拉!

回过头来看这两年写的代码,确实实在不断进步当中:最开始就是不断地堆代码,狂用for循环,只能算是写代码,不能算编程;后来发现函数挺好用的,于是会写一些小的函数,开始用apply;再后来开始写大函数,就是将那些代码用一个大函数罩起来~ 这个缺点就是不好debug,另外代码太大,一个函数几百行,不好完善。

现在开始将这些代码函数化,block化~ 这真的有很大的优势:

1. 写代码的时候更有系统性:现在写代码不是以前那样想哪儿写哪儿,而是像写作文一样,先列一个提纲:需要几个函数,各个函数的 input 和 output 都是什么; 怎样安排主函数的结构:哪里用循环,哪些函数放在循环里面,哪些放外面;接下来的就是把各个函数给填满。

2. 快速:我本以为这样写代码会很慢,但是自己却惊奇地发现自己在状态并不太好的情况下能够在两个小时内完成一项任务。而且,这些代码以后可以作为“block”随意添加到其他代码中,将会更加加快编程速度。

3.debug:以前用R 的时候很少用debug这个函数。知道最近才终于开始用,也终于发现了其重要性!而且模块化的代码真的是更好来查错!

另外,还有一点非常重要的是:使用项目,以及相对目录进行R的数据操作!

这一点真的非常重要:R是数据操作语言,经常会调用各种不同的数据。然而一旦我将某个数据文件变换位置,或者变换文件夹目录结构,原来的脚本便无法再次奏效,必须把数据文件的路径修改才行。因此,使用Rstudio的project选项,在其创建的目录里面添加一些诸如data,output,plots等的目录,采用相对目录的写法进行代码的编写。你会发现,即使变换目录,甚至可能到了其他电脑上面,这个project依旧work!所以,以后尽量以项目的方式进行管理,并且多采用相对目录的写法进行编程!

总之,最近感到在编程上面有所感悟,记录一下。当然,与高手比还差得很远,继续加油!

R编程感悟的更多相关文章

  1. Python编程感悟

    从今年起开始学习python,最开始是听得MIT的那门公开课,然后又看了一本入门的书籍.但是总是没有觉得python很好用.可能的原因现在想起来是:IDE始终找不到顺手的,另外R用得太舒服了- any ...

  2. 编程感悟-建立好代码sop

    1.最近学django和python,发现很多的函数记不住,这时候我百度了一下,发现记不住是程序员的正常情况, 这下心安理得多了,记好笔记和咱的sop吧,会很快. 社会是不是也这样,好多东西也记不住, ...

  3. java编程感悟01

    很多职位都要求有极强的编程能力,在学习编程的过程中可能很累,可能想有新认识,你可以将编程看做通关模式,以此鼓励自己不断的学习. jsp中注册时的验证码就需要javaSE的编程功底,如果这个会了,验证码 ...

  4. Python调用R编程——rpy2

    在Python调用R,最常见的方式是使用rpy2模块. 简介 模块 The package is made of several sub-packages or modules: rpy2.rinte ...

  5. java编程感悟02

    很多时候我们需要网上查阅他人的代码,如果代码比较长或者注释较少,阅读起来就会比较费劲,这时需要培养快速读懂应用他人的代码的能力. 实现图片的旋转功能: import java.awt.geom.Aff ...

  6. Go 协程编程感悟

    0.GPM模型 1.默认地, Go所有的goroutines只能在一个线程里跑 ,除非告诉Go我们允许同时最多使用多个核,或者主动让出CPU时间,使goroutine可以抢占式的执行 2.如果当前go ...

  7. Android传感器编程带实例

    看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推荐大家也看看.话不多说,还是言归正传吧. 一.前言 我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要 ...

  8. 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你

    方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...

  9. Android传感器编程带实例(转)

    源:http://www.cnblogs.com/xiaochao1234/p/3894751.html 看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推 ...

随机推荐

  1. Web API初印象

    理解REST,RESTful和Web API 1.REST:Representational State Transfer表征状态转移,是Roy Fielding博士在2000年他的博士论文中提出来的 ...

  2. qml 相关的博客

    http://qt-project.org/wiki/SpaceAppsChallengeResources http://www.ics.com/blog https://www.ics.com/d ...

  3. git常用语法

    git笔记  1.     获取项目(克隆):     Git repository:                       git clone -b develop ssh://git@68. ...

  4. [示例]NSDictionary编程题-字典的排序应用(iOS6班)

    代码: #import <Foundation/Foundation.h> static NSString * const kName = @"name"; stati ...

  5. iOS 文件读写

    #import <Foundation/Foundation.h> @interface Utils : NSObject +(void) writeFile:(NSString *) f ...

  6. Memcached 及 Redis 架构分析和比较

    Memcached和Redis作为两种Inmemory的key-value数据库,在设计和思想方面有着很多共通的地方,功能和应用方面在很多场合下(作为分布式缓存服务器使用等) 也很相似,在这里把两者放 ...

  7. zabbix3.0部署(LAMP)

    0.1 初始化 #!/bin/sh yum clean all systemctl stop firewalld.service systemctl disable firewalld.service ...

  8. Spring学习笔记之bean配置

    1.命名bean 每个bean都有一个或者多个的的标识符.这些标识符必须在加载他们的容器里边唯一.一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名. 基于xml的配置 ...

  9. javaweb之Cookie篇

    Cookie是在浏览器访问某个Web资源时,由Web服务器在Http响应消息头中通过Set-Cookie字段发送给浏览器的一组数据. 一个Cookie只能表示一个信息对,这个信息对有一个信息名(Nam ...

  10. 记录一些容易忘记的属性 -- UIButton

    //设置按钮文字字体(这个只在自定义button时有效)    btn1.titleLabel.font = [UIFont systemFontOfSize:30]; showsTouchWhenH ...