首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

R语言(一)

2024-12-18 来源:化拓教育网

向量的建立:

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()函数

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()

数据框也是矩阵形式,但列可以是不同类型的数据。每列是一个变量,每行是一个观测值。

求平均值、和、最大值、最小值、连乘、方差、标准差

R语言是区分大小写的

画散点图 plot() 函数

结果见下图

读取文件:

可以将文件存放在R的工作目录下,或者在代码中添加要读取文件的路径。

比如现在我在工作目录创建了一个 读取文件test.txt 的文件,则可以通过如下的一些函数进行读取:

倘若此文件不在工作目录下,存放位置为D:\R-3.5.1,则调用read.table()函数时要加上文件路径,如下:

第一次会报错是因为文件不在工作目录下,命令中没有添加文件路径故报错。在添加路径时要注意,应该为 // ,是因为 / 在R中表示转义字符。

此外还可以通过剪贴板操作来读取文本或者EXCEL中的数据:

即首先剪切文件中的数据,然后在R中输入相对应命令 此时文件不放在工作目录下,也可读取内容。“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))]表示求总分最高的值的学号。
显示全文