【学习】笨办法学R编程(一)

在倚天屠龙记中,有一人唤作火工头陀。此人练功不靠心法,只靠模仿他人招式,由外而内,自成一家。练习编程也有如此的法门,不看文字描述,只观察和模仿别人的代码。这样也可以由外而内学会编程。《笨办法学python》的作者Zed Shaw 就说过这种笨办法入门其实更简单。阳志平在他的文章《如何学习一门新的编程语言》中也讲到,初学编程要在学习区刻意的大量练习,少看理论书。

TED上一位教育家同样谈到这么一个故事,他把一个计算机扔在一个偏远的印度小村子里不去管它,在那里没有上过学的小孩就能自己学会英语和计算机的用法。实际上人脑是非常善于自我探索和学习的。因此本系列教程的特点就是只有演示代码加少量注释。通过反复模仿和练习,揣摩代码的变化和结果,你就能自行领悟其含义,并打下坚实的编程基础。

本系列每篇文章的目的都是用R语言编程来解决一个Project Euler的问题。Project Euler是一系列由易到难的计算机编程挑战,它提供了一个平台来激发我们解决问题的灵感和思路。本人写这个教程的目的有三:一是为了好玩,二是提高编程水平,三是示范说明以提供给需要的R初学者。另外从R-Blogger上了解,已经有两位高人用R在计算Project Euler,各位也可以参照他们的文章(博客1、博客2)。 Let’s Go # 预备知识练习,在R控制台逐行输入观察结果 1:10 10:1 x <- 1:10 print(x) sum(x) x > 5 x[x > 5] x > 5 & x < 8 x > 8 | x < 3 10 %% 3 9 %% 3 x %% 3 x %% 3 == 0 x[x %% 3 == 0] # Project Euler 1 # 找到1000以下,所有能被3或5整除的数,将它们相加 x <- 1:999 sum(x[x %% 3 == 0 | x %% 5 == 0 ]) 最后得数是233168,我感觉自己的解法比其它人的更体现了R的特点。各位看官,对有何意见,也不妨多多赐教。 本例将介绍R语言中的while循环和if条件。最终用它来解决Project Euler的第二个问题。除了练习之外你还需要了解一些斐波纳契数列的知识。废话不多说了,打开R控制台,跟着输入下面的代码,自行琢磨吧。 # 预备练习,while循环和if判断 x <- 1:10 print(x) print(x[10]) print(x[-10]) i <- 1 while (i <= 10) { print(x[i]) i <- i + 1 } i <- 1 while (TRUE) { print(x[i]) i <- i + 1 if (i > 10) break } # 用循环和条件来完成前篇文章中的问题 # 可以体会到R语言向量化计算的特点。 x <- 1 sumx <- 0 while (x < 1000) { if (x %% 3 == 0 | x %% 5 == 0) { sumx <- sumx + x } x <- x + 1 } print(sumx) # Project Euler 2 # 找到4000000以下的斐波纳契数列 # 将其中的偶数进行求和 i <- 2 x <- 1:2 while (x[i] < 4e6) { x[i+1] <- x[i-1] + x[i] i <- i + 1 } x <- x[-i] sum(x[x %% 2 == 0]) 得到的结果为4613732。使用while和if语句时要注意,其判断条件都要放在圆括号中,之后的代码段如果超过一行则要用大括号注明。

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2014-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

如何系统地自学 Python?

是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓? 幸运的是,Python 是一门初学者友好的编程语...

2247
来自专栏程序员互动联盟

【编程思想】给学C++的人N条忠告

N条忠告: 1.把C++当成一门新的语言学习; 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programmi...

3818
来自专栏编程

学好C加加,首先得学好C语言,下面来说一下:必须要掌握四个知识点

很多初学C语言的小伙伴,在学习之初并没有一个大概的概念,学习这门语言需要掌握多少知识点。 怎么才算学的差不多? C语言的精髓点在哪? 学到多少东西才能够达到做项...

2158
来自专栏Java学习网

因为一个分号,引起的程序员大讨论

 之前在网上看到过一段有趣的代码,据说在女生节的时候,某软件学院的学生还专门给女生拉了条幅 ?   代码   为了看的更清楚一点,我们把上面的代码整理出来,代码...

2808
来自专栏牛客网

腾讯面经 一面

春招的简历被捞起来,接到电话都是懵逼的。。一上来先问面试官 不好意思咱们这是个啥部门啥职位啊,然后才是知道是c++研发...

1192
来自专栏极限编程

解析简单设计原则

在 我的简单设计价值观 一文中,我分享了我在实践中形成对简单设计的理解。而提到价值观,平时跟同事讨论某个技术实践的时候,一旦触碰到价值观,我就会很谨慎,因为在两...

1096
来自专栏web前端教室

周末小贴士之“什么是语法糖”?有啥意义?

前端开发是一个细节分支特别多的行业,如果用一个水果来比喻的话,我觉得“红毛丹”特别形像,就是这个东西, ? 你看它外面的细毛很多,但没有哪一根毛可以单独支撑起它...

1998
来自专栏PPV课数据科学社区

编程 | Python基础面试题快速自测, 你真的懂Python基础么?

Python基础面试题快速自测, 你真的懂Python基础么?先来几道题试试,比如: 1. What will be the output of the co...

43611
来自专栏从流域到海域

《笨办法学Python》 总结

《笨办法学Python》 总结 写到这里我决定停了,剩下的课程就是Python在各个方向上的应用,包括网络、数据处理等等。 有了前面的基础,你可以专门找一本书来...

2178
来自专栏牛客网

2018春招总结

  从2018.2.27正式投的第一份简历开始计算,到今天是2018.4.24,到现在算下来大概两个月,随着确认了腾讯的录用通知函,漫长的春招终于告一段落,虽然...

3645

扫码关注云+社区

领取腾讯云代金券