R语言(一)

作者: BioLearner | 来源:发表于2019-02-24 12:59 被阅读76次

    向量的建立:

    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))]表示求总分最高的值的学号。

    相关文章

      网友评论

        本文标题:R语言(一)

        本文链接:https://www.haomeiwen.com/subject/egycyqtx.html