R语言基础总结

符号

= 或 <- 或 ->

赋值

<<- 或 assign()

“超赋值”操作符,函数内部定义全局变量

? / ?? / help()

Help, e.g. help("scan")

demo()

 

example()

e.g. example(glm)

methods()

e.g. methods(class="data.frame")查看数据帧相应的通用函数;methods(plot)查看plot函数能处理的类别

:

from:to,冒号优先级最高, e.g. x[1:3]

==、!=

等、不等

|、&、!

或与非。

&和|逐个元素计算,&&和||对向量的第一个元素进行运算,必要时才匹配第二个参数。(类似Java)

NA

不可得、值丢失

NaN

非数值(Not a Number)

NULL

(注意:要大写),e.g. 删除21到24列dataA[21:24]<-list(NULL)

%*%

矩阵乘法

[[idx]] 重复中括弧

获取嵌套其中的序列,如path[[m]][1]指第m个path序列(第m列)里的第1个元素,帮助见?("[[")

Lst$variable

从列表或类似类型,获取内部变量

...

额外参数,将一个函数的参数传递给另一个函数

+

续行符

#

注释

TAB键

自动补齐

上下键

调用历史命令


e.g.

a %*% t(a) #矩阵相乘

fun1 <- function(data, data.frame,graph=TRUE, limit=20, ...) {}

 

逻辑

if  (条件)   表达式1   else   表达式2

ifelse(条件,  yes,  no)

for (变量  in  向量)

while(条件)

repeat {}

break; next(略过next后面的任务)

is.na(); is.nan()

mode(),判断类型,包括:numeric / integer / double / complex / logical / character

as.sth(),转类型

 

e.g.

x = c(6:-4); sqrt(ifelse(x >= 0, x, NA))

for (i in 1:5) print (1:i)

while(i <= 5) {

+ print(1:i)

+ i = i+1

+ }

as.numeric(); as.character(); as.factor();as.matrix(); as.data.frame();as.integer; as.vector

 

 

操作

getwd()

工作目录

setwd()

 

source()

批处理,e.g. source("exp.R")

warning()

 

stop()

 

print()

 

formatC()

数值作为字符串输出

cat()

字符串联,可以插入\n(换行)及\t(tab键)

paste()

字符粘贴(非字符型自动转换),sep=string:设置分隔符,默认空格

ls / objects

显示变量

rm()

删除对象,e.g. rm(x,y); rm(list=ls())

proc.time()

系统时间

head()

读取数据头几行

sink()

sink("file")后续的输出由终端转向一个外部文件,sink()重新恢复到终端

q()

Quit

删除包

e.g. remove.packages("devtools")

安装包

(1)e.g. install.packages("devtools")

(2)download package, menu: packages -> install packages from local zip files

推荐(1),可以把dependent 的包也下载下来。镜像选China.beijing(第一个)最快。命令详见:
http://www.cnblogs.com/xianghang123/archive/2012/06/13/2547940.html

安装特定版本包

Library(devtools); install_version()

sessionInfo()

查看部分已安装包版本

packageVersion()

查看所有已安装包版本!e.g. packageVersion("git2r")

help(package=””)

help(package="程序包名"),看R程序包里到底有哪些函数

e.g.

formatC(1/3, format = "f", digits= 4)

paste(1:12) # 与as.character(1:12)等价

 

 

数据读取

 

read.table()

外部读取,ASCII数据

read.table(“文件名”,header=T 或者F,sep="分栏字符",quote="\"'")

e.g. read.table("clipboard",header=T)

read.csv()

外部读取,逗号分界符

read.delim()

外部读取,tab分界符

scan()

大些的数据外部读取,不受电脑内存限制

scan(file=“文件名”,what=”complex”,sep=”分栏字符”)

readLines()

外部读取网站, e.g. readLines("http://www.163.com")

source()

菜单: 文件 > 运行R脚本文件, e.g. source("commands.R")

data.frame()

内部建立

matrix()

内部建立matrix(数据,行数,列数,byrow=T)

 

注:若数据集很大(如1,000,000观测x200变量),则可由ODBC联接由数据库读入.e.g.

library(RMySQL)

library(DBI)

drv=dbDriver('MySQL')

con=dbConnect(drv, dbname='data', user='tchou', password='password',

host='localhost')

data=dbGetQuery(con, 'select * from SHDATA')

head(data)

 

 

数据类型

 

一般类型

数值型(numeric)

1,1.2,3.1415926

复数型(complex)

1+2i

字符型(character)

‘A’/ “hello world!”

逻辑型(logical)

TRUE / FALSE

* str() 查看数据类型 


vector向量(序列)

一维,最为基本的类型,调用C语言运算,相对快些

 

c()

最简

seq()

较简,seq(from=value, to=value, by=value, length=value)

rep()

复杂,rep(x, times=value) 或rep(x, each=value)

sequence(x)

创建从1 开始以给定参数值结尾的连续整数序列

names()

设置向量元素名字

numeric/character

产生空向量,e.g. numeric()

rule

1、向量的下标从1开始

2、负的下标去掉向量中对应的元素(正为提取)

3、支取向量逻辑关系代入索引中,e.g. x[!is.na(x)]

4、向量运算中的循环法则(recycling rule)

1:2 + 1:4 

e.g.

seq(1,10,by=0.5); seq(1,10,length=5)

rep(2:5,2)

x[c(1,4)]; x[x<40&x>10]

fruit <- c(5,10,1); names(fruit) <-c("orange","banana","apple"); fruit

 

向量化(vectorization)

将一组命令向量化,调用C运算,提高效率

 

 

matrix(矩阵)

多维广义上的向量

 

matrix()

 

dim()

 

rbind()

上下合并矩阵

cbind()

左右合并矩阵

t()

转置矩阵

e.g.

matrix(1:4,nr=2, byrow=TRUE)

x <- 1:14; dim(x) <- c(2,7)

 

 

list(列表)

包含任何类型的对象

e.g.

fl = list(x = 1:6, y = matrix(1:4, nrow =2))

fl$x; fl$y[2]; fl[1]; fl[[1]]; fl[[1]][2]

 

 

data frame(数据框架)

将许多向量组合起来的一个对象,它是二维的,通常其列表示变量,其行表示观测。和矩阵类似的结构,但列可以为不同的对象。

高级应用有attach()、detach()、search()

e.g.

z.df=data.frame(cbind(INDEX = y, VALUE =x))  # INDEX和VALUE是重新命名的向量名字

z.df[1,]; z.df[1,2]

Q&A

(1)删除某一列的方法

Data$genome <- NULL  # Data[2] <- NULL # Data[[2]] <- NULL

Data[1:2] <- list(NULL)  # remove multiple columns

重命名某列

 

factor 因子

factor创建无序因子(e.g. factor(1:3,levels=1:5)),ordered创建有序因子,levels查看levels

e.g.

province<-c("四川","湖南","江苏","四川","四川","四川","湖南","江苏","湖南","江苏")

factor(province)

levels(factor(province))  # Levels: 湖南 江苏四川

ordered(province)  # Levels: 湖南 < 江苏 < 四川

 

综合

向量

一维

矩阵

多维

列表

一维复合数据类型

数据框架

多维复合数据类型

因子

 分类变量

 

 

function(函数)

 

自定义函数

变量名 = function( 变量列表 )  函数体

e.g.

fl = function(n) {

 ...

}

 

一般函数

 

length()

sum()

max()

range()

prod()

abs()

mean()

var()

sd()

log()

exp()

sqrt()

date()

 

 

* range,即c(min(x),max(x))

* prod(x)给出x中所有元素的乘积

 

e.g.

sum(y<0.5) #个数和; sum(y[y<0.5]) #值和

 

文本函数

 

grep()

x=readLines("http://www.163.com")

x[grep("

 

 

 

 

矩阵函数

lower.tri(matrix, diag=T)

取右上半角矩阵

which()

根据value逆取索引(注i从1开始)

c(5,6,7,8,9,10,2,4,6)

which(all==9|all==10) #result:5、6

solve(a,b)

(1)aX=b,求X

(2)solve(a) 则aX=I,即求a的逆矩阵X

diag(vector)

创建单位矩阵

eigen()

特征值:eigen(Sm)$values,特征向量:eigen(Sm)$vectors

 

 

分布函数

 

rnorm()

正态分布,rnorm(n,mean = 0, sd = 1)

rexp()

指数分布,rexp(n, rate = 1)

rpois()

泊松分布,rpois(n,λ)

rbinom()

二项式分布,rbinom(n, size, prob)

runif()

均匀分布,runif(n, min = 0, max = 1)

rf()

F 分布Fisher-Snedecor,rf(n, df1, df2)

rt()

t 分布,rt(n, df)

e.g.

rnorm(30, 100, 0.1)

 

画图函数

 

plot()

散点图

abline()

斜率一元回归图

hist()

直方图

density()

密度图

qq

Quantile-quantile (Q-Q)图,检测分布形态,e.g. qqnorm(x), qqline(x), qqplot(x,y)

points(x,y)、lines(x,y)

低级绘图命令用于高级绘图

axis(side, . . . )

在当前图形的指定边上添加坐标

text()

附上文本

 

参数估计

lsfit(), qr()

最小二乘拟合

 

假设检验

var.test()

F检验, e.g. var.test(height~gender, data=UG)

t.test()

T检验, e.g. t.test(UG$weight, mu=170, alternative="less")

chisq.test()

卡方检验, e.g. chisq.test(f,p=prob)

 

回归

Glm.logit回归

logit.glm<-glm(y~x1+x2+x3,family=binomial,data=d5.1)

summary(logit.glm)

Gam回归

library(mgcv)

gam(Overall ~ s(Income, bs = "cr"), data = d) # s() 样条函数, cr 三次样条

gam(Overall ~ Income + Edu + Health, data = d)  # 此时与glm一样

gam(Overall ~ s(Income) + s(Edu) + s(Health), data = d)

Overall ~ s(Income) + s(Edu) + Health

s(Girth,Height)  #Girth 和 Height 不独立,存在相互影响

 


共线性

 

step()

逐步回归分析,e.g. step(sj_lm,direction="both") # both向前向后检验

 

预测

 

predict()

e.g. predict(logit.step, data.frame(x1=1))


你可能感兴趣的:(DataAnalysis,R,R语言)