楼主: 殷红已
10262 8

[学习分享] 笨办法学R编程(一) [推广有奖]

  • 0关注
  • 9粉丝

等待验证会员

大专生

3%

还不是VIP/贵宾

-

威望
0
论坛币
129 个
通用积分
0
学术水平
18 点
热心指数
24 点
信用等级
18 点
经验
617 点
帖子
19
精华
0
在线时间
20 小时
注册时间
2014-1-22
最后登录
2017-1-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

笨办法学R编程(一)


在倚天屠龙记中,有一人唤作火工头陀。此人练功不靠心法,只靠模仿他人招式,由外而内,自成一家。练习编程也有如此的法门,不看文字描述,只观察和模仿别人的代码。这样也可以由外而内学会编程。《笨办法学python》的作者Zed Shaw 就说过这种笨办法入门其实更简单。阳志平在他的文章《如何学习一门新的编程语言》中也讲到,初学编程要在学习区刻意的大量练习,少看理论书。群号:342699237,本群为R语言交流群, 我们学习交流的模式是大家一块读《R语言实战》,每周读一章,每周日晚七点半大家在群里交流总结,想参加交流的需要提前写好一千字左右的分享,然后大家一起来讨论学习,过后星星会整理成小问题形式,陆勤老师会总结成文章形式,都会发到网上供更多的人学习。
我们现在在读第三章,还属于基础部分,感兴趣的同学赶快加入吧!绝对不用害怕跟不上趟!不论你是上班族还是学生党,每周只需花两个小时提前阅读,大家就可以一块交流,学习进步!期待你的加入。
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 + 1
}
i <- 1
while (TRUE) {
print(x)
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 < 4e6) {
x[i+1] <- x[i-1] + x
i <- i + 1
}
x <- x[-i]
sum(x[x %% 2 == 0])
得到的结果为4613732。使用while和if语句时要注意,其判断条件都要放在圆括号中,之后的代码段如果超过一行则要用大括号注明。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:笨办法学R编程 R编程 Project python Euler r语言 r语言编程 笨办法学R编程

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
complicated + 4 + 4 + 4 精彩帖子
jjyy923 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

本帖被以下文库推荐

沙发
gssdzc 在职认证  发表于 2014-5-24 21:12:29 |只看作者 |坛友微信交流群
有意思

使用道具

藤椅
aoxianghero 发表于 2014-7-8 21:50:28 |只看作者 |坛友微信交流群
谢谢!!!!!!!!!!!!11

使用道具

板凳
chris1998 发表于 2014-7-9 11:04:20 |只看作者 |坛友微信交流群
学习了,多谢分享!

使用道具

报纸
573051424 发表于 2014-7-9 19:26:17 |只看作者 |坛友微信交流群
其实这样效率并不高,当然对于实在学不会的人来说还是比较管用的

使用道具

地板
sophieeeeeeeeee 发表于 2017-6-10 20:35:58 |只看作者 |坛友微信交流群
谢谢楼主的分享!!!!!

使用道具

7
lonestone 在职认证  发表于 2017-6-11 07:32:07 来自手机 |只看作者 |坛友微信交流群
殷红已 发表于 2014-5-23 15:57
笨办法学R编程(一)
在倚天屠龙记中,有一人唤作火工头陀。此人练功不靠心法,只靠模仿他人招式,由外而内 ...
学习一下

使用道具

8
a1wendy 发表于 2017-6-11 17:51:34 |只看作者 |坛友微信交流群
> sumx<-0
> a<-1
> b<-1
> while(a<4000000|b<4000000){
+ ifelse(a%%2==0,sumx<-sumx+a,ifelse(b%%2==0,sumx<-sumx+b,sumx<-sumx))
+ ifelse(a>b,b<-a+b,a<-a+b)}
> sumx
[1] 9227464

求大神指点,哪里错了,为什么返回的结果是双倍的呢?

使用道具

9
a1wendy 发表于 2017-6-11 18:13:24 |只看作者 |坛友微信交流群
楼主给的最后一个例题报错,
# Project Euler 2
# 找到4000000以下的斐波纳契数列
# 将其中的偶数进行求和
i <- 2
x <- 1:2
while (x < 4e6) {        ##这里改成while(max (x) < 4e6) {
x[i+1] <- x[i-1] + x     ##这里改成x[i+1] <- x[i-1] + x
i <- i + 1
}
x <- x[-i]
sum(x[x %% 2 == 0])


终于不报错了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 17:48