全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2676 4
2014-06-14
---
[cousera数据科学]R Programming
---

## 第一课 基础篇
1.R的对象种类(原子级,只有这几种),对一门语言来说,数据类型是需要首先搞明白的character
numeric
interger--这玩意会跟numeric混淆,一般认为要as.numeric一下才好,为什么不知道。这玩意后面跟个L
complex-- 复数,一般我用不着
logical --逻辑

2.关于numbers
Inf 是可以运算的,1/0 =Inf, 1/Inf =0, 此外还有-Inf的存在
NaN 表示undefined value,”不是一个数字“,比如0/0,或者缺失值,但是这玩意不同于na
(http://www.cookbook-r.com/Basics/Working_with_NULL_NA_and_NaN/)


3.属性attributes,不是所有的object都有全部的属性哈
names --names向量,row.names,col.names数据框 ,rownames, colnames矩阵,dimnames,矩阵
dimensions ( 矩阵,数组)
class --这个谁都有
length
以上这些用attributes()查看
4.Fators,存成integer,有label。factor比integer更好懂(有label),比character存储更省空间
factor ( vector, levels=c(") )

5.Missing values
NaN 未定义的数学计算结果,本身也是Na
Na 更全,integer, character,类型都有

6.Subsetting Lists
```{r}
x <- list( foo=1:4, bar = 0.6 ) ;
class( x[1] )
class(  x[[1]] ) # 单层引list,双层引内容
class( x$foo ) #
```

Nested的情况:
```{r}
x <- list( a =list(10,12,14), b=c(3.14, 2.81))x[[c(1,3)]]
x[[1]][[3]]
x[[c(2,1)]]
```

7.读取数据
read.table/ read.csv
readLines, 读取txt文件,通常支持大文件的读入,Rstudio上导入csv/txt的功能代码也是这个
source  读取R代码
dget 同上,没用过
load 读取保存好的工作环境 workspaces,一般来说,原始数据比较大,我喜欢处理好之后存成workspaces,再做的时候读这个
unserialize 读取二进制的R对象,这干啥的?

8.读取大数据集:内存/操作系统
1,500,000 * 120 数据,每个单元8 bytes =...= 1.34GB内存需求
事实上如果要做运算还要大一些,建议内存是数据量的3倍


## 第二课 结构控制,函数,

1.控制结构
if, else
for 固定数目的循环
while 依照条件循环
repeat 无条件重复
break 停止
next 跳过一部
return 返回值

2.if
if () {} else {} / ifelse(  , , )
if () { } else if () { } else if () { } ... else { }

3.for
```{r}
for ( i in 1:10 ) { print (i )}
for ( i in seq_along( names(iris)) ) { print( names(iris))  }
#seq_along函数有意思,它是seq的子函数
```

4. Coding Standards
Indent your code : 代码要有间隔,尽量在函数之间分开
Limit the width of your code 80? columns : 每行不超过80?字
此外,关于代码可读性,推荐大作一篇,by思喆大
http://www.bjt.name/2010/11/google-r-code-style/

5. Scoping Rules of R
R的namespaces 对函数和非函数是隔离开的,所有可能同时存在一个对象叫Lm,还有一个函数也叫lm
R使用的是Lexical Scoping(词法域),不同于Dynamic Scoping
相关资料:
在词法作用域的环境中,变量的作用域与其在代码中所处的位置有关。由于代码可以静态决定(运行前就可以决定),所以变量的作用域也可以被静态决定,因此也将该作用域称为静态作用域。在动态作用域的环境中,变量的作用域与代码的执行顺序有关。
词法作用域允许程序员根据简单的名称替换就能推导出对象引用,例如常量、参数、函数等。这使得程序员在编写模块化的代码是多么的得心应手。同时,这可能也是动态作用域令人感觉到晦涩的原因之一。

函数可以返回函数!
```{r}
make.power <- function(n) {
  pow <- function(x) {
     x^n
  }
  pow
}

cube <- make.power(3)
square <- make.power(2)
cube(3)
square(2)

```

R使用词法作用域的结果:
所有对象都要在内存里( python 也是吗?)——最大的诟病
其他两个没懂==

6.向量化运算简介
```{r}
x <- 1:4; y<- 6:9
x*y
x %*% y
```

7.时间和日期
日期的class是date
时间的class有两种 POSIXct(整数)和POSIXlt(list含day of week等)
从1970-01-01开始计算
```{r}
x <- as.Date("1970-01-01") #日期
x
unclass(x)

x <- Sys.time() #时间
x
p <- as.POSIXlt(x)
names( unclass(p))
```

推介striptime函数:把不规范的字符转化成日期时间的利器,参数不用记,看帮助就好了~


二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-14 08:42:01
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

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

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

2014-6-14 09:26:15
complicated 发表于 2014-6-14 08:36
---
[cousera数据科学]R Programming
---
半道来的,不清楚。
二维码

扫码加我 拉你入群

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

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

2014-6-25 18:34:49
建议你写一个Rmarkdown放在你的github上面,哈哈。
二维码

扫码加我 拉你入群

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

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

2014-6-26 06:19:40
galilee 发表于 2014-6-25 18:34
建议你写一个Rmarkdown放在你的github上面,哈哈。
有的呀有的呀

https://github.com/dcshallot/datasciencecoursera
这是我的~
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群