一、向量
1、向量的加法运算
c(1,2,3)+c(2,4,6,1,2,3)
两个向量相加的时候,其中一个元素个数必须是另一个的整数倍,循环相加,如图的运算,前面向量中的前三位分别和后面向量的前三位和后三位相加。结果就是c(1+2,2+4,3+6,1+1,2+2,3+3).
2、range函数
range(c(1,2,3)+c(2,4,6,1,2,3))
range可以求出向量中最小的元素与最大的元素,相当于求该向量内元素的“区间”。
3、sort函数
sort(c(1,2,3)+c(2,4,6,1,2,3))
sort函数将向量内的元素,按照大小排序。
sort函数默认是升序排序,如果想要降序,可以使用以下代码:
x=c(1,2,3)+c(2,4,6,1,2,3)sort(x,decreasing=TRUE)
4、order函数
order(x)
order函数表示x内不同大小的元素所在的位置,按照元素的大小由小到大依次排序,如order(x)中第一个元素4,代表的是x向量中最小的元素2所在的位置,是第4个;而order(x)中最后一个元素3,代表的是x向量中最大的元素9所在的位置,是第3个。
x[order(x)]
知道order(x)表示什么之后,就很好理解x[order(x)],就是按照坐标查找x内的元素。order(x)就是坐标。最后运行的结果就是x进行sort以后的样子。
5、seq
seq(10)seq(2,100)seq(2,by=5,100)seq(along=x)
seq是生成一个序列。by表示步长,可以不写在中间,在括号内就行。
along=x的意思是,根据x内的元素个数生成自然,x有几个元素,生成的序列就会有几个自然数。
6、rep(重复函数)
rep(c(2,3),3)将 2 3 重复3遍将 2 3 中的2重复3遍,3重复4遍
rep(c(2,3),c(3,4))
将b a c重复三遍
c(“a”,“b”,“c”)[rep(c(2,1,3),3)]
7、paste
paste(“I”,“Love”,“You”)paste(c(“X”,“Y”),"=",4:7)
粘贴,长度必须是整数倍,x和y循环粘贴
x[c(1,3)] #取x的第1和第3个元素
x[-c(1,3)] #去掉x的第1和第3个元素
8、索引
ages=c(Li=32,Zhang=33,Lin=35)
索引
ages[“Li”]
ages[1]
9、替换
x[c(1,3)]=c(188,189) #把x中第1位和第3位替换掉
二、矩阵
1、生成矩阵
A=matrix(data,ncol,nrow,byrow)
ncol表示列
nrow表示行
byrow默认是按照列排序,如果要按行排,byrow要赋值TRUE
2、合成矩阵
cbind(c(1,2),c(3,4)) #cbind按列排
rbind(c(1,2),c(3,4)) #rbind按行排
练习:生成矩阵
解法:
B1=matrix(1:12,ncol=4,nrow=3,byrow=T)
B2=rep(c(0,3),2)
B3=seq(7,by=-1,4)
cbind(rbind(B1,B3),B2)
3、截取
A[1:2,] #1:2表示取1-2行
A[,1:2] #1:2表示取1-2列
4、矩阵相加
A+c(100,200,300) #矩阵相加是按列循环相加
5、内积
crossprod(c(1,2,3),c(2,3,4))
或%%
上面生成的是一个11的矩阵,想要把它变成一个数,需要另外运算
c(crossprod(c(1,2,3),c(2,3,4)))
6、外积
%o% #小写o
或outer(a,b,"*")
c(1,2)%o%c(3,4)
三、因子
factor(x,level=c(0,1),label=c("",""))
factor(c(1,0,0,1,1),level=c(0,1),label=c(“male”,“female”))
分别计算平均值
tapply(c(165,170,168,172,159),factor(c(“male”,“female”,“male”,“male”,“female”)),mean)
#gl(n,k,length=n*k) k表示重复次数
gl(2,3) #2个水平,重复3次gl(2,1,6) #2个水平,每个水平出现1次,总长度6
四、列表和数据框
rec=list(name=“liming”,age=30,score=c(100,23,56))rec[[3]] #双中括号
rec$age=13 #更改年龄为13
五、cat
cat(c(“AB”,“c”),c(“E”,“F”),"\n",sep=" ")
file里面写目录,表示把前面的东西输出到文件里去
cat(“i=”,1,"\n",file="",append=TRUE)
append表示悬挂,这样后面写的东西不会把文件里面的覆盖掉
接下来写一串代码运行一下试试,先创建一个路径后再运行代码。把路径粘贴到file后面。
write(t(A),file=“D:/fyhSTUDY/r/data.txt”)