向量运算、矩阵与数组、列表
x <- 1:10#这里是面向对象,结果赋值到一个对象上
x+1#这里是面向过程,IDE会直接输出过程的结果
x-3
x <- x+1
y <- seq(1,100,length.out = 10)
x+y#对应元素相加
x*y#对应元素相乘
x**y #x的y次方
y%%x #y/x的余数
y%/%x #整除运算
z <- c(1,2)
x+z#z循环使用
x*z#同上
z <- 1:3
x+z#长的对象长度不是短的对象长度的整倍数
x>5#逻辑运算
x>y
c(1,2,3) %in% c(1,2,2,4,5,6)#判断左侧向量的元素是否在右侧向量
x=y#赋值操作
x <- 1:10
y <- seq(1,100,length.out = 10)
x==y#测试x是否等于y
#vector functions
x <- -5:5
abs(x) #取x的绝对值
sqrt(x) #平方根
log(16,base=2) #log()默认底数为e
log10(10)
exp(x)#计算以e为底(默认),x为指数的数
ceiling (c(-2.3,3.1415)) #不小于x的最小整数
floor(c(-2.3,3.1415)) #不大于x的最大整数
trunc(c(-2.3,3.1415)) #取整
round (c(-0.618,3.1415),digits=2) #保留2位小数
signif (c(-0.0618,3.1415),digits=3) #保留3位有效数字
sin(x);cos(x);tan(x)
vec <- 1:100
sum(vec)
max(vec)
min(vec)
range(vec)
mean(vec)
var(vec) #方差
round (var(vec),digits=2)
sd(vec) #标准差
prod(vec) #所有元素乘积
median(vec)#中位数
quantile(vec)#分位数
quantile (vec,c(0.4,0.5,0.8))#计算四分位数,中位数,八分位数
#get index
t <- c (1,2,2,5,7,9,6)
which.max (t) #返回最大值的索引值
which.min(t) #返回最小值的索引值
which(t==7)
which(t>5)
t[which (t>5)]#使用索引来找到这些元素
iris3#三种鸢尾花数据集
state.x77#五十个州的八个指标
heatmap(state.x77)#直接绘制热图
#Creating Matrices
x <- 1:20
m <- matrix(x,nrow = 4,ncol = 5)#指定行数和列数
m <- matrix(1:20,4,5)#四行五列的矩阵
matrix(x,nrow=4,ncol=6)
matrix(x,4,4)
matrix(x,3,3)
m <- matrix(x,nrow = 4,ncol = 5,byrow = TRUE)
#自动生成4行5列的矩阵,默认按列生成数字,这里改变byrow,默认按行
rnames <- c("R1","R2","R3","R4")
cnames <- c("C1","C2","C3","C4","C5")
dimnames(m)=list (rnames,cnames)
dim(x)
dim(x) <- c(4,5)#生成一个矩阵
x#x由向量变成矩阵
#Creating an array
x <- 1:20#生成有20个元素的向量
dim(x) <- c(2,2,5)#将x这个向量变为225结构的矩阵
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))
z#这里的dim1对应2,dim2对应3,dim3对应4
Titanic
#Using matrix subscripts
m <- matrix(x,nrow = 4,ncol = 5)
m[1,2]#第1行第2列
m[1,c(2,3,4)]#第1行,第234列
m[c(2:4),c(2,3)]#第2到4行,第2和3列
m[c(2,1),c(2:5)]#第2和1行,第2到5列
m[2,]#访问第二行
m[,2]#访问第二列
m[2]#访问对应的行
m[-1,2]#去除第一行,再取第二列
#Using matrix names
m["R1","C2"]
state.x77[,"Income"]#逗号表示访问整列
state.x77["Alabama",]
#Matrix peration
m+1
m*2
m+m
n <- matrix(1:20,5,4)
m+n#Error in m + n : 非整合陈列
colSums(m)
rowSums(m)
colMeans(m)
rowMeans(m)
n <- matrix (1:9,3,3)
t <- matrix (2:10,3,3)
n*t#矩阵的内积,对应的元素相乘
n%*%t#矩阵的外积
diag(n)#取对角线的值
diag(m) #取对角线的值
t(n)#将行和列进行互换
a <- matrix(rnorm(16),4,4)#rnorm生成正态分布函数
solve(a)
eigen(a)
dist(a)
state.center#由两个向量构成的列表,是美国50个州的经纬度
a <- 1:20#向量
b <- matrix(1:24,4,6)#矩阵
c=mtcars#数据集
d <- "This is a test list"#标量
mlist <- list(a,b,c,d)#归结到一个列表中
mlist <- list(first=a,second=b,third=c,fourth=d)
#为每一个列表的元素指定名称
#列表中的元素没有顺序,使用名称可以直接访问元素
#List
mlist[1]#使用索引进行访问,访问列表第一个元素
mlist[c(1,4)]#访问多个列表元素
state.center[c("x","y")]#使用元素的名字来访问列表
mlist$first#使用$接要访问的元素的名称
state.center$x#同上
mlist[1]#输出列表一个子集,本质上还是一个列表
mlist[[1]]#输出元素本身的数据类型
class(mlist[2])#使用class函数测试一下
class(mlist[[2]])
mlist[5] <- iris#这里不能直接赋值
mlist[[5]] <- iris#这里给列表赋值
#给mlist[[5]]命名
names(mylist)
name <- c("first", "second","third" ,"fourth","fifth")
names(mylist) <- name
mlist[5] <- NULL#去除第五部分
mlist[[5]] <- NULL#删除列表元素的值