一.基本操作
代码语言:javascript
复制getwd()
setwd("c:/Users/wangtong/Desktop/RData/")#更改工作目录
list.files()#查看工作目录下的文件
dir()#查看工作目录下的文件
x <<- 5#<<-表示赋值给全局变量
ls()#查看已经定义的变量
ls.str()#查看已经定义的变量及详细信息(ls和str的组合)
str(x)#列出x的详细信息
rm(x)#删除x
rm(y,z)#删除x和y
rm (list=ls())#删除全部赋值
history()#列出代码记录
history(25)#列出最近的25条记录
save.image()#保存
二.换电脑后,包的移动
代码语言:javascript
复制Rpack <- installed.packages()[,1]#列出已经安装的R包
save(Rpack,file = "Rpack.Rdata")
load("C:/Users/wangtong/Desktop/RData/Rpack.RData")#在新电脑上运行该代码
for (i in Rpack) install.packages(i)
三.向量
代码语言:javascript
复制x<-c(1,2,3,4,5)
y<-c("one","two","three","four")#字符型向量加引号
z<-c(TRUE,T,T,F,F)
mode(x)#查看向量x的类型
3.1.向量索引
3.1.1 数值型向量
代码语言:javascript
复制x<-(1,2,3,4,5)
x[1]#取向量x当中第1个元素
x[-1]#取向量x当中除了第1个以外的其它元素
x[c(1,3,5)]#取第1,3,5个元素
x[c(T,F)]#>1,3,5 循环补充
x[x>3]#从向量x中取出大于3的数
x[x>2&x<4]#>3 同时
3.1.2 字符型向量
代码语言:javascript
复制y<-c("one","two","three","four")
“one” %in% y #>TRUE
y["one" %in% y] #>"one" "two" "three" "four"
y[y %in% c("one","two")] #>"one" "two"
3.1.3 取位置
代码语言:javascript
复制t <- c (1,2,2,5,7,9,6)
which.max (t) #向量t中的最大值所在位置 >6
which.min(t)
which(t==7)# 元素7所在位置
which(t>5)
t[which (t>5)]#返回具体值
3.1.4 将向量x赋予维度
代码语言:javascript
复制x<-1:20
dim(x)<-c(4,5)#4行5列,按列填充 #矩阵
x<-1:20
dim(x)<-c(2,2,5) #数组
3.1.5 命名
代码语言:javascript
复制x<-c(1,2,3,4)
names(x)<-c("one","two","three","four")
代码语言:javascript
复制v<-c(1,2,3,4)
append(x=v,values=5,after=4)#在位置4后面插入数值5
代码语言:javascript
复制x<-x[-c(1,2)]#删除向量x中的1和2
x[1]<-3#把向量x中的第1个数改为3
四.矩阵(矩阵的四则运算需要行列一致)
4.1创建矩阵
代码语言:javascript
复制m <- matrix(1:20,4,5) # 4行5列,按列填充,遵循循环补齐原则
m <- matrix(1:20,4,5,byrow=TRUE)#按行填充
4.2 给矩阵补充行名和列名
代码语言:javascript
复制m <- matrix(x,nrow = 4,ncol = 5,byrow = TRUE)
rnames <- c("R1","R2","R3","R4")
cnames <- c("C1","C2","C3","C4","C5")
dimnames(m)=list (rnames,cnames)
4.3 矩阵索引
代码语言:javascript
复制m <- matrix(1:20,nrow = 4,ncol = 5)
m[1,2]
m[1,c(2,3,4)]
m[c(2,4),c(2,3)]
m[2,]
m[,2]
m[2]#第2行,第1列
m[-1,2]
m["R1","C1"]
4.4 矩阵的运算
代码语言:javascript
复制m 1#矩阵m中每一个元素都加1
colSums(m)#每一列的总和
rowSums(m)
colMeans(m)
rowMeans(m)
4.5 矩阵中的函数
代码语言:javascript
复制diag(m)#取对角线上的数字(该函数要求矩阵行和列相同)
t(m)#将行列转置
五.数组
5.1 创建数组
代码语言:javascript
复制dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2,3,4), dimnames=list(dim1, dim2, dim3))
六.数据框
数据框的索引
代码语言:javascript
复制attach(mtcars)# mtcars为内置数据集,使用attach函数后,可省略"mtcars$",直接写列名
mpg
hp
detach(mtcars)#关闭
with(mtcars,{mpg})#大括号里面可替换列名
mtcars[3]#输出数据集mtcars的第3列
代码语言:javascript
复制subset(data, age >= 30, select = c(“name”, “age”)#在数据框data中选择age大于等于30的观测值,并只选择name和age两列
数据框的更改
代码语言:javascript
复制transform(women, height = height*2.54)
transform(women, cm = height*2.54)#新增一列,列名为cm
代码语言:javascript
复制worldphones <- as.data.frame(WorldPhones)
rs <- rowSums(worldphones)
cm <- colMeans(worldphones)
total <- cbind(worldphones,Total=rs)#给数据框添加列
七.列表
7.1创建列表
代码语言:javascript
复制a <- 1:20
b <- matrix(1:24,4,6)
c=mtcars
d <- "This is a test list"
mlist <- list(ni=a,hao=b,ya=c,la=d)
7.2 列表索引
代码语言:javascript
复制mlist[1]#输出的为列表的子集,结果仍是列表
mlist[[1]]#输出的为元素本身的数据类型
mlist[c(1,4)]
mlist["ni"]
mlist$ni
代码语言:javascript
复制mlist[[5]] <- iris#添加/修改列表 注意需为双中括号
mlist[5] <- NULL#删除列表
mlist[[5]] <- NULL
八.因子
代码语言:javascript
复制week <- factor(c("Mon","Fri","Thu","Wed","Mon","Fri","Sun"),order = TRUE,
levels = c("Mon","Tue","Wed","Thu","Fri","Sat","Sun"))#添加order = TRUE表示有序型变量b
九.NA(未知值) NaN(不存在的值,如0/0) Inf(无穷大或无穷小,不可能的值,如1/0)
代码语言:javascript
复制a <- c(NA,1:49)
is.na(a)#测试向量a里面含元素NA吗
sum(a,na.rm = TRUE)
mean(a,na.rm = TRUE)#按49个数来计算
colSums(is.na(sleep))#计算每一列缺失值数目
rowSums(is.na(sleep))
c <- c(NA,1:20,NA,NA)
d <- na.omit(c)#将NA值移除
十.字符串
10.1 统计字符串长度
代码语言:javascript
复制> length(c(1,23,456))
[1] 3
> nchar(c(1,23,456))
[1] 1 2 3
> nchar("hello world")
[1] 11#空格也计算在内