向量的建立:
1、数值型向量的建立
①seq()或“:” #若向量(序列)具有较为简单的规律
a[-5]表示去掉第五个值,a[-(1:5)]表示去掉第1到第5个值,a[c(1,3,2)]表示查看第1第3第2个值。
length=10表示产生10个字符,自动计算。最后二项因设置太多参数出错,by和length不能同时设置。
②rep() #若向量(序列)具有较为复杂的规律
③c() #若向量(序列)没有什么规律
mode()用来查看字符的类型,length()可用来查看长度
④scan() #通过键盘逐个输入
第一行1: 8的后面加空格然后回车;7:不空格直接回车
⑤sequence()
⑥letters[]
⑦which()函数
which.max(x1)返回的值不是x1的最大值,而是最大值的下标,即最大值是第几个。
⑧rev()函数和sort()函数
2、字符型向量的建立
字符和字符向量在R中广泛应用,比如图标的标签,字符串在输入时可以使用单引号或双引号。字符向量可以通过函数c()连接。函数paste()可以接受任意个参数,并从它们中顺次取出字符并练成字符串,形成的字符串的个数与参数中最长字符串的长度相同。如果参数中包含数字的话,数字将被强制转化为字符串,在默认情况下,参数中的各字符串是被一个空格分隔的,不过用户可以通过参数sep=""把它更改为其它字符串,包括空字符串。
3、逻辑型向量的建立
注意!、!=、==、|(表示 或 )、&(表示 且 )等的使用,另外逻辑向量可以在普通的运算中被使用,此时它们将被转化为数字向量,FALSE当做0,而TRUE当做1.
4、因子型向量的建立
矩阵的创建:
rbind()是一行一行的建立矩阵,cbind()是一列一列的建立矩阵。
matrix()函数
nrow表示行数,ncol表示列数。matrix默认是bycol的,即按照列从上往下排的,当设置byrow=T后,即按行从左往右排。
t()函数,矩阵加减
t()函数作用是将矩阵转置,即行变列,列变行。矩阵的加减需要有相同的行数和列数。
矩阵相乘
当两个矩阵具有的相同行数和列数,a*b表示两矩阵对应位置的值相乘;当两个矩阵符合相乘的要求时,a%*%b则表示a、b两矩阵相乘,而非值相乘。这里会报错是因为a、b两矩阵不符合矩阵相乘的要求
如上一张图所述。此处报错是因为a、b矩阵不是相同行数、列数的矩阵
diag()函数
行数和列数相等的矩阵称为方阵。diag()函数可求方阵的对角线(当是普通矩阵而非方阵时,diag函数所得情况见下图)。当diag()函数所处理的对象是向量,则创建一个对角线矩阵,其他部位是0。当diag()函数处理的是标量,如一个数值,则产生阶数为指定数字的单位矩阵。
矩阵求逆,函数rnorm(),solve()
rnorm(16)表示按照正态分布生成16个数,solve(a)表示求a矩阵的逆函数,solve(a,b)表示解方程组,即求方程组a*x=b的解x。
eigen()函数
数据框data.frame()
数据框也是矩阵形式,但列可以是不同类型的数据。每列是一个变量,每行是一个观测值。
求平均值、和、最大值、最小值、连乘、方差、标准差
画散点图 plot() 函数
读取文件:
可以将文件存放在R的工作目录下,或者在代码中添加要读取文件的路径。
比如现在我在工作目录创建了一个 读取文件test.txt 的文件,则可以通过如下的一些函数进行读取:
倘若此文件不在工作目录下,存放位置为D:\R-3.5.1,则调用read.table()函数时要加上文件路径,如下:
第一次会报错是因为文件不在工作目录下,命令中没有添加文件路径故报错。在添加路径时要注意,应该为 // ,是因为 / 在R中表示转义字符。
此外还可以通过剪贴板操作来读取文本或者EXCEL中的数据:
此时文件不放在工作目录下,也可读取内容。“clipboard”表示剪切板,header=F表示不读取列头。读与不读的区别可见下图:
此外,还可以将excel文件另存为prn格式(空格分隔)或csv格式(逗号分隔)的文件,再读取。
循环语句
for语句
while语句
R脚本:
source()函数执行脚本,脚本的位置要注意。脚本中如果想输出某个变量需要用 print()函数。
综合例子,用seq()函数创建学号,其它步骤详见下面的图片
用runif()函数创建均匀分布的值,runif(100,min=80,max=100)表示创建100个均匀分布的值,最大值是100,最小值是80.round()函数表示四舍五入。rnorm(100,mean=80,sd=7)表示创建100个正态分布的值,平均值为80,标准差为7.
同样的方法构建x3,发现有超过100的值,用which(x3>100)表示超过100的值的下标。
合成数据框并保存到硬盘:
可以通过write.table()函数将数据框保存为文件,存放在指定的位置。
计算各科平均分:
mean(x)表示对数据框x求平均值,colMeans(x)表示对数据框x的各列求平均值,colMeans(x)[c("x1","x2","x3")]表示对数据框x的指定的三列求平均值,apply(x,2,mean)表示对数据框x的列求平均值(其中1表示对行处理,2表示对列处理)。
which.max(apply(x[c("x1","x2","x3“)],1,sum))表示求总分最高的值的下标。x$num表示求数据框x的num这一列,x$num[which.max(apply(x[c("x1","x2","x3")],1,sum))]表示求总分最高的值的学号。