楼主: complicated
1901 7

[学习分享] [cousera数据科学]R Programming 第三课 向量化运算和debug [推广有奖]

  • 3关注
  • 18粉丝

已卖:10份资源

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
6463 个
通用积分
3868.8149
学术水平
88 点
热心指数
86 点
信用等级
58 点
经验
21958 点
帖子
506
精华
0
在线时间
1425 小时
注册时间
2007-6-16
最后登录
2024-4-20

楼主
complicated 在职认证  发表于 2014-6-22 09:09:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. ---
  2. [cousera数据科学]R Programming
  3. ---

  4. ## 第三课 向量化运算和debug

  5. ### 1.loop functions
  6. lapply : 对list中的每一个element执行function
  7. sapply : 对lapply的结果尝试简化,能输出
  8. apply : 对数值型矩阵执行行向量或者列向量的function,仅仅代码简单,效率不高
  9. tapply : 对**向量**的子集执行function,多用于统计量计算
  10. mapply : 高维度的lapply,不明觉厉
  11. apply族的参数function不能用多个,比如mean,sd,range这样,但是可以自定义一个组合函数,见apply例子
  12. split : 虽然不是向量化运算,但是结合lapply会有很大用处

  13. ### 2.lapply
  14. 输入是list,如果不是,函数用as.list自动转换;
  15. 实际的循环使用C写的,所以快;
  16. ```{r}
  17. x <- list( a= 1:5, b = rnorm(10) )
  18. lapply( x , mean)
  19. ```

  20. ### 3.sapply
  21. 如果返回的每一个元素长度均为1,则整体输出一个向量
  22. 如果返回的每一个元素是长度相等的向量,则返回一个矩阵
  23. 其他,返回List

  24. ### 4.apply
  25. less type is better!
  26. rowSums = apply( x, 1, sum) # 这两者实现功能一样,但是左边的更快一些!
  27. colMeans = apply( x, 2, mean) # 同上
  28. apply( x , 1, median ) # 这个就只能apply了
  29. ```{r}
  30. x <- matrix( rnorm(200), 20, 10 )
  31. apply( x , 1, quantile , probs=c( 0.25, 0.75))
  32. apply( x, 1, function(x) list( q= quantile , probs=c( 0.25, 0.75) ,
  33.                                median = median(x) ,
  34.                                r= range(x)) )
  35. ```

  36. ### 5.tapply
  37. 与其他apply不同,它有一个index函数,指定分组用的factor或者list of factors
  38. ```{r}
  39. x <- c( rnorm(10), runif(10), rnorm(10,1) )
  40. f <- gl(3, 10) # gl function : gnerate factor levels
  41. tapply( x , f , mean)

  42. ```

  43. ### 6.split
  44. x是一个向量或list或data frame,f是一个factor或者list of factors
  45. split+ lapply/sapply比tapply在多变量场景下方便,当然更方便的是plyr包的函数
  46. ```{r}
  47. # split + apply可以用两行代码计算数据框中多个变量按分组统计的统计量
  48. s <- split( airquality, airquality$Month)
  49. lapply( s, function(x) colMeans( x[ , c("Ozone", "Solar.R", "Wind")]))
  50. sapply( s, function(x) colMeans( x[ , c("Ozone", "Solar.R", "Wind")]))
  51. sapply( s, function(x) colMeans( x[ , c("Ozone", "Solar.R", "Wind")], na.rm= T ))

  52. # tapply针对vector所以只能一个一个来
  53. tapply( airquality[ ,  "Ozone" ], airquality$Month, mean , na.rm=T )
  54. tapply( airquality[ ,  "Solar.R" ], airquality$Month, mean , na.rm=T )
  55. tapply( airquality[ ,  "Wind" ], airquality$Month, mean , na.rm=T )

  56. # 关于factor和split还有
  57. x <- rnorm(10)
  58. f1 <- gl(2,5)
  59. f2 <- gl(5,2)
  60. interaction(f1, f2)
  61. split( x, list(f1, f2))
  62. ```

  63. ### 7.Debug
  64. traceback : 查看函数调用堆栈,找到最近出错的函数,在函数套函数的场合很有用
  65. debug : debug模式提供函数详细,停在第一行供检查
  66. browser : 扔进function,运行到此时挂起,可以检查函数运行中每一步的output
  67. trace : 插入fuction的任意位置??
  68. recover : ??allows you to modify the error behavior so that you can browse the function call stack

  69. ```{r}
  70. lm( y ~ x )
  71. traceback()

  72. debug(lm)
  73. lm( y ~ x )
  74. ```
复制代码

二维码

扫码加我 拉你入群

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

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

关键词:Programming Program couse debug 数据科学 function element 统计

已有 3 人评分学术水平 热心指数 信用等级 收起 理由
jmpamao + 1 + 1 + 1 精彩帖子
playmore + 5 + 5 + 5 精彩帖子
ywh19860616 + 1 + 1 + 1 八错

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

密码被盗??

沙发
gssdzc 在职认证  发表于 2014-6-22 11:08:36
挺好的。感谢分享的

藤椅
complicated 在职认证  发表于 2014-6-22 13:39:34
gssdzc 发表于 2014-6-22 11:08
挺好的。感谢分享的
谢谢鼓励,我会坚持的

板凳
playmore 发表于 2014-6-23 09:35:27
我觉得那几个apply讲得挺清楚,我之前就知道有这么几个apply,但没认真搞明白过,这回都明白了
另外也不提一句plyr,算是很常用的包了吧

最后的debug工具没有结合RStudio讲,都用上RStudio也不稍带着提一句
在RStudio里如果报Error,点一下自动就TraceBack了,都用不着自己写
还有讲这一讲的人自己都不这几个函数,照本宣科了下,没有实际例子,没意思

报纸
complicated 在职认证  发表于 2014-6-23 10:42:18
playmore 发表于 2014-6-23 09:35
我觉得那几个apply讲得挺清楚,我之前就知道有这么几个apply,但没认真搞明白过,这回都明白了
另外也不提 ...
太好了终于有人讨论了
我也觉得他们apply讲的挺不错的,plyr之前没接触过,略看了一下简直神器~然后几乎把apply这些都忘光了~呵呵
Rstudio还能自动traceBack呢啊?我还真没了解过,回头试一下,谢啦
debug那块儿确实讲的一般般,嗯,我觉得还不如实践出真知

不过这课程的作业可挺难得感觉,week2的assignment我基本上照猫画虎的贴上去了,完全没搞懂干啥用的。。。

感觉第四周的profiling挺有用的,尤其是做工程开发的时候,不过光听课还是搞不太明白,回来得翻翻书~

地板
playmore 发表于 2014-6-23 13:24:44
complicated 发表于 2014-6-23 10:42
太好了终于有人讨论了
我也觉得他们apply讲的挺不错的,plyr之前没接触过,略看了一下简直神器~然后 ...
课上的作业说实在的都是最简单的,最基本的数据操作
只不过我用R不熟,也折腾了好几个小时才完成
真正能到上手就用的程度的话,应该是十分钟一道题的水平

我觉得跟这个课程就得跟着做题,否则他的课全是放PPT
基本没有在R上互动的内容,不像国内的那些视频教程
所以得一边看视频,一边开个R自己敲敲看

话说我一口气报了8门,现在才看了前两个,
不知道到了7月份还能不能打开那些课程的网页了
还好把视频全下下来了

7
complicated 在职认证  发表于 2014-6-23 14:26:31
playmore 发表于 2014-6-23 13:24
课上的作业说实在的都是最简单的,最基本的数据操作
只不过我用R不熟,也折腾了好几个小时才完成
真正能 ...
嗯嗯,估计是我基础太不扎实了,有的题都用到sqldf了,估计应该用不着的。。。思路还是不太对。。。

我是一个一个报的,多了做不过来呀,不过看视频用ipad下载下来,不卡,在线要卡死

8
playmore 发表于 2014-6-23 14:59:50
complicated 发表于 2014-6-23 14:26
嗯嗯,估计是我基础太不扎实了,有的题都用到sqldf了,估计应该用不着的。。。思路还是不太对。。。

我 ...
sqldf不用,最多用split+apply
只不过用sqldf就简单多了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 22:26