R编程感悟
虽然大学阶段曾经学过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编程感悟的更多相关文章
- Python编程感悟
从今年起开始学习python,最开始是听得MIT的那门公开课,然后又看了一本入门的书籍.但是总是没有觉得python很好用.可能的原因现在想起来是:IDE始终找不到顺手的,另外R用得太舒服了- any ...
- 编程感悟-建立好代码sop
1.最近学django和python,发现很多的函数记不住,这时候我百度了一下,发现记不住是程序员的正常情况, 这下心安理得多了,记好笔记和咱的sop吧,会很快. 社会是不是也这样,好多东西也记不住, ...
- java编程感悟01
很多职位都要求有极强的编程能力,在学习编程的过程中可能很累,可能想有新认识,你可以将编程看做通关模式,以此鼓励自己不断的学习. jsp中注册时的验证码就需要javaSE的编程功底,如果这个会了,验证码 ...
- Python调用R编程——rpy2
在Python调用R,最常见的方式是使用rpy2模块. 简介 模块 The package is made of several sub-packages or modules: rpy2.rinte ...
- java编程感悟02
很多时候我们需要网上查阅他人的代码,如果代码比较长或者注释较少,阅读起来就会比较费劲,这时需要培养快速读懂应用他人的代码的能力. 实现图片的旋转功能: import java.awt.geom.Aff ...
- Go 协程编程感悟
0.GPM模型 1.默认地, Go所有的goroutines只能在一个线程里跑 ,除非告诉Go我们允许同时最多使用多个核,或者主动让出CPU时间,使goroutine可以抢占式的执行 2.如果当前go ...
- Android传感器编程带实例
看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推荐大家也看看.话不多说,还是言归正传吧. 一.前言 我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要 ...
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...
- Android传感器编程带实例(转)
源:http://www.cnblogs.com/xiaochao1234/p/3894751.html 看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推 ...
随机推荐
- TaskTracker节点上的内存管理器
Hadoop平台的最大优势就是充分地利用了廉价的PC机,这也就使得集群中的工作节点存在一个重要的问题——节点所在的PC机内存资源有限(这里所说的工作节点指的是TaskTracker节点),执行任务时常 ...
- CAP Confusion: Problems with ‘partition tolerance’
by Henry Robinson, April 26, 2010 The 'CAP' theorem is a hot topic in the design of distributed data ...
- ASP.NET备份还原数据库
核心技术:using System.Data.SqlClient;using System.IO;string SqlStr1 = "Server=(local);DataBase=mast ...
- ionicModal中的监听事件
//添加监听事件angular.module('MyApp').directive('gotTapped', ['$ionicGesture', function($ionicGesture) { r ...
- bzoj 1934: [Shoi2007]Vote 善意的投票
#include<cstdio> #include<iostream> #define M 100000 #include<cstring> using names ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- WP8 学习 Onnavigatedto和OnnavigatedFrom的区别
OnNavigatedTo:重写 OnNavigatedTo 方法以检查导航请求并且准备供显示的页面.这个方法就像是初始化(Ini) ,它先于Loaded事件之前被执行,所以在这里可以控制一些初始化前 ...
- Hibernate缓存机制 (2013-07-02 13:51:32)转载▼
标签: java web hibernate 缓存 代码 分类: javaweb 缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访 ...
- SharePoint开发 - 自定义页面(错误页、登出页)
博客地址 http://blog.csdn.net/foxdave 本文叙述如何自定义SharePoint的固有页面,比较简单,用一句话说就是"做个页面,写一句代码." 创建Sha ...
- 从github上面拷贝源码
http://www.cnblogs.com/xing901022/p/4287064.html