1、R语言快速入门

###R的快速入门###
##1 R的基本语法##***************************************************************
#求助*
help.start()#启动R的web帮助
?rnorm
help(rnorm)#显示“rnorm”函数的帮助页面,包括它所在的程序包(package), 详细的描述, 用法以及例子等
apropos(“norm”) #获得名字中带字符“norm”的所有函数
args(rnorm) #得到rnorm函数的自变量列表
#注意*
#R命令提示符  >
#R命令和名称*大小写*敏感!
#R命令中不可使用全角的标点,注意区别!只可用英文!
#语法*
#符号*
#> 命令或运算提示符
#+ 续行符
#基本算术运算
#+    加号
#-    减号
#*    乘号    
#/    除号
#^    乘方*$$$$$$$$
#=, <-赋值符 ps:从右往左赋值$$$$$$$$
#******例子******#
3+5
3-5
3/5
3^5
x=5
(10+2)*2
n<-(10+2)*5
x=x+x
x<-x+x
x<-y<-5
(a<-n*x)#$$$$$$$式子外面加括号表示输出计算结果
#逻辑运算*判断$$$$$$$$
#==     相等
#!=     不等
# |     或
#  &    且
#逻辑值: TRUE(或T), FALSE(或F)
#例子:
7!=6
!(7==6)  # !表示取否命题
(7==9)|(7>0) #只要一个是真命题 就是真命题
(7==9)&(7>0)
c(13,4,9,-7,18) > 7#向量的逻辑运算
#向量是R中最为基本的类型!!!!!!********$$$$$$$$****************************
#向量的类型包括以下四种$$$$
#数值型  一切实数
#逻辑型  TRUE FALSE
#字符型  "statistic"  $$$$$
#复值型  1i   $$$$
#一个向量中元素的类型必须相同!!!
#如何查看向量或者对象的类型:*
mode()   #查看对象的类型¥¥¥¥
length()  #查看对象的长度,指元素个数¥¥¥¥
#例子:
x <- 1
mode(x)
length(x)
A <- "statistic "
b <- TRUE
d <- 1i
mode(A)
mode(b)
mode(d)
NA #--- 缺失值(not availabel)
NaN #--- 表示不是数字的值(not a number) 报错
sqrt(-2) #开方
#*****************************************#
#向量的建立**************************
#建立数值向量的函数
seq()#若向量(序列)具有较为简单的规律
rep()#若向量(序列)具有较为复杂的规律
sequence()#若向量(序列)为整数序列
c() #若向量(序列)没有什么规律(常用)
#例子:
c(4,7,17)  #生成元素为(4 7 17)的向量。 
seq(1,10,by=0.5)    # =seq(from=1,to=10,by=0.5) 
seq(1,10,length=21)   # = seq(1,10,length.out=21) 
rep(2:5,2)            # =  rep(2:5, times=2)  2345重复两次
rep(2:5, c(1,2,3,4))  # [2 3 3 4 4 4 5 5 5 5]
rep(1:3, times = 4, each = 2) #重复4次,每个重复出现2遍
sequence(10)   # sequence(n)  生成1~10 1 2 3 4 5 6 7 8 9 10
seq(10)
#数值向量的运算****************************************************
#例子
5 + c(4,7,17)
5 * c(4,7,17)
c(-1,3,-17) + c(4,7,17)
c(2,4,5)^2
sqrt(c(2,4,25)) #开根号
mean(c(2,4,9))  #取均值
var(c(2,4,9))   #取方差
1:2+1:4         #较短的向量会自动循环替补
#字符向量
(Z <- c("green" , "blue sky", "-99"))
mode(Z)
#逻辑向量
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
x > 13
sum(x>13)#求个数$$$$
#逻辑向量可以在普通的运算中被使用,此时它被转化为数字向量, FALSE当做0, TRUE当做1.
(x>13) + 1

###因子(factor)向量###
###将字符向量转换成因子  因子化 factor()
a <- c("green", "blue", "green", "yellow")
factor(a)
#levels --- 表示因子的水平
###将数值型向量转换成因子
b <- c(1,2,3,1)
b<- factor(b)
b
###将字符型因子转换成数值型因子
ff <- factor(c("A", "B", "C"), labels=c(1,2,3))#换标签
ff
###将数值型因子转换为字符型因子
ff <- factor(1:3, labels=c ("A", "B", " C "))
ff
###给因子b的水平命名
levels(b) <- c("low", "middle", "high")
gl(k, n, label, length)产生规则的因子序列
#k --- 水平数
#n --- 每个水平重复的次数
#label --- 指定每个水平因子的名称(可选)
#length --- 指定产生数据的个数(可选)
#例如:
gl(3,5) #三个因子,每个因子重复5次
gl(2, 3, label=c ("Male", "Female"))
gl(2, 2, length=10) #两个因子重复两次 直到长度为10
######向量的下标(index)与向量子集(元素)的提取######
#正的下标     提取向量中对应的元素
#负的下标     去掉向量中对应的元素
#逻辑运算     提取向量中元素的值满足条件的元素
#注:R中向量的下标从1开始,这与通常的统计或数学软件一致.而  象C语言等计算机高级语言的向量下标则从0开始.

#例子:
x <- c(42, 7, 64, 9)
x[1]    #提取第一个元素
x[-2]  #删除第2个元素
x[c(2,4)] #提取第2和4个元素¥¥¥¥!!!!!!

x > 10    #值大于10的元素逻辑值 逻辑运算
x[x>10]   #值大于10的元素  命题为真 就提取出来
x[x<40&x>10]
y <- runif(100, min=0, max=1)#产生(0,1)上100个服从均匀分布的随机数
sum(y<0.5)              #值小于0.5的元素的个数
length(y[y<0.5])        #等价于上面
sum(y[y<0.5])           #值小于0.5的元素的值的和
sd(y[y<0.5])            #值小于0.5的元素构成的样本的标准差

#()是用来做函数运算的,[]是用来提取的
###重要的数据结构###
#矩阵
#矩阵的建立 
v <- 1:6
m <- matrix(v, 2, 3)   #默认按列加载
m <- matrix(v, 2, 3,byrow=T)#改为T就可以按行加载  
dim(m)  #[ps 向量用length()]
rownames(m)<- c ("Male", "Female")
colnames(m)<- c("low", "middle", "high")
dimnames(m)#查看矩阵的行名和列名
x <- diag(3)#生成单位阵
diag(m)     #以m的对角元构成的对角阵
diag(v)     #将v中元素作为对角元构成对角阵
m
#矩阵的下标(index)与子集(元素)的提取
#规则:同向量的下标
#例子:
z <- matrix(1:12, 3, 4)
z
z[2,4] #第二行第四列
z[1:2, c(2,4)]#第一行和第二行的第二列和第四列
z[3, ]        #提取第三行
z[ ,2]        #提取第二列
z[ ,-c(1,3)]  #删除第一列和第三列
z[ ,4] <- NA         #将第四列换成缺失值$$$$$$$$
z[is.na(z)] <- 1    #将缺失值用1代替
z
###矩阵的运算###*********************
##代数运算
#转置t()
x <- matrix(1:6, 2, 3)
x
t(x)  
#几个矩阵合并
y <- matrix(1:4, 2, 2)
y
cbind(x, y)                  #按列合并,要求行数相同
z <- matrix(-1:(-6), 2, 3, by=T)
z
rbind(x, z)                  #按行合并,要求列数相同
###矩阵乘法###
#矩阵相乘
x * z                          #两同维数矩阵对应元素相乘
x %*% t(z)                     #两矩阵代数乘积
tcrossprod(x, z)               #等价于上面
crossprod(x, z)                # = t(x) %*% z
kronecker(x, z)                #kronecker 乘积
#矩阵的特征值分解
ev <- eigen(y)
ev                          #返回值是一个含有 values 和  
#vectors两个分量的列表
ev$values             #取出特征值(lambda1, lamda2,…,)
ev$vectors           #取出相应的特征向量(v1, v2,…,)
#矩阵的Cholesky分解  A = P’P, 其中P为上三角矩阵
A <- diag(4)+1
P <- chol(A)
P
t(P) %*% P
#矩阵的奇异值分解  A = UDV’, 其中U’U=V’V=I, D是对角阵
A.svd <- svd(A)   
#返回值是一个含有 d, u, v 三个分量的列表
A.svd$u %*% diag(A.svd$d) %*% t(A.svd$v)
t(A.svd$u) %*% A.svd$u 
t(A.svd$v) %*% A.svd$v 
#行列式|A|
det(A)
#矩阵的求逆  Ax=b  
b <- -1:2
x <- solve(A, b)
A %*% x
invA <- solve(A)                  #A的逆矩阵
A %*% invA
#矩阵的拉直
as.vector(A)
#*****************************************#
#*****************************************#
###矩阵的统计运算###
#统计运算
#求均值,中位数等
m <- matrix(rnorm(12), nrow=3) #生成个数为12的标注正态分布的随机数
m
apply(m, MARGIN=1, FUN=mean)        #求各行的均值 margin表示边缘 
apply(m, MARGIN=2, FUN=median)     #求各列的中位数
#按列中心化,标准化 
m.cen <- scale(m, center=T, scale=F)          #按列中心化 
apply(m.cen, MARGIN=2, FUN=mean)
m.stand <- scale(m, center=T, scale=T)       #按列标准化 
apply(m.stand, MARGIN=2, FUN=mean)
apply(m.stand, MARGIN=2, FUN=sd)
#减去中位数
row.med <- apply(m, MARGIN=1, FUN=median)
sweep(m, MARGIN=1, STATS=row.med, FUN="-)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值