分享

笨办法学R编程(一)

xioaxu790 2014-7-4 15:15:45 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 16861
本帖最后由 xioaxu790 于 2014-7-4 15:27 编辑
问题导读:
1、我们如何去学习一门新的编程语言?
2、R语言如何入门?




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

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

本系列每篇文章的目的都是用R语言编程来解决一个Project Euler的问题。Project Euler是一系列由易到难的计算机编程挑战,它提供了一个平台来激发我们解决问题的灵感和思路。本人写这个教程的目的有三:一是为了好玩,二是提高编程水平,三是示范说明以提供给需要的R初学者。另外从R-Blogger上了解,已经有两位高人用R在计算Project Euler.


Let's Go
  1. # 预备知识练习,在R控制台逐行输入观察结果
  2. 1:10
  3. 10:1
  4. x <- 1:10
  5. print(x)
  6. sum(x)
  7. x > 5
  8. x[x > 5]
  9. x > 5 & x < 8
  10. x > 8 | x < 3
  11. 10 %% 3
  12. 9 %% 3
  13. x %% 3
  14. x %% 3 == 0
  15. x[x %% 3 == 0]
  16. # Project Euler 1
  17. # 找到1000以下,所有能被3或5整除的数,将它们相加
  18. x <- 1:999
  19. sum(x[x %% 3 == 0 | x %% 5 == 0 ])
复制代码

最后得数是233168,我感觉自己的解法比其它人的更体现了R的特点。各位看官,对有何意见,也不妨多多赐教。


本例将介绍R语言中的while循环和if条件。最终用它来解决Project Euler的第二个问题。除了练习之外你还需要了解一些斐波纳契数列的知识。废话不多说了,打开R控制台,跟着输入下面的代码,自行琢磨吧。
  1. # 预备练习,while循环和if判断
  2. x <- 1:10  
  3. print(x)  
  4. print(x[10])  
  5. print(x[-10])
  6.   i <- 1  
  7. while (i <= 10) {  
  8. print(x[i])
  9. i <- i + 1 }
  10. i <- 1  
  11. while (TRUE) {  
  12. print(x[i])
  13. i <- i + 1
  14.   if (i > 10) break  
  15. }
  16.   # 用循环和条件来完成前篇文章中的问题  
  17. # 可以体会到R语言向量化计算的特点。
  18. x <- 1
  19. sumx <- 0  
  20. while (x < 1000) {  
  21. if (x %% 3 == 0 | x %% 5 == 0) {
  22. sumx <- sumx + x  
  23. }
  24. x <- x + 1  
  25. }  
  26. print(sumx)  
  27. # Project Euler 2  
  28. # 找到4000000以下的斐波纳契数列  
  29. # 将其中的偶数进行求和
  30. i <- 2
  31. x <- 1:2  
  32. while (x[i] < 4e6)  
  33. {
  34. x[i+1] <- x[i-1] + x[i]
  35. i <- i + 1
  36. }
  37. x <- x[-i]
  38. sum(x[x %% 2 == 0])
复制代码



得到的结果为4613732。使用while和if语句时要注意,其判断条件都要放在圆括号中,之后的代码段如果超过一行则要用大括号注明。

下一篇:笨办法学R编程(二)




没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条