R学习 2

1. 8R的命令

R是一个语法简单的表达式语言,它是大小写敏感的。R可以使用的标识取决于操作系统和语言而有所不同。一般来说所有的字母和数据都允许使用,加上点号和下划线,名称必须是以点号或字母开头,如果是以点号开头则第二个字符必须不能是一个数字,目前R对名称没有长度限制(2.13以前限制为256byte)

命令语句由表达式和赋值组成。如果命令是一个表达式,则它将被计算和打印,而相应的值将被丢失。而如果是赋值,则它同样会被计算,但不会自动打印同时值将被保存到变量当中。

命令由分号;或换行分隔。初级命令被包含在{和}当中组成一个组合命令。注释以#号开始,直到一行结束,它可以被放在任何位置。

如果一个命令在一行中还没结束,则需要使用+号来表示该命令延伸到下一行。+号是默认的连接符号,可以被用户修改。

终端输入的命令行不能超过4096byte。


1.9.调用之前的命令

上下方向键用于在历史命令中向前/后滚动。


1.10 执行文件中的命令或输出结果到文件

可以使用以下命令来执行保存在文件中的命令(假设文件名为command.R

> source("commands.R")

要将控制台中的所有输出定向到文件(如record.lis),则可以通过以下命令

> sink("record.lis")

如果要重新输出到控制台,则使用以下命令:

>sink()


1.11 存储数据和删除对象

R创建和维持的实体被视为对象(objects),它们可能是变量,数字数组,字符串,函数和由这些组成的其它数据结构。在R的会话期间,对象通过名称来创建和存储。查显示当前R中存储的所有对象名称可以通过命令

> objects()

或者

> ls ()

当前存储的对象集合称为工作空间(workspace)。可能通过rm函数来删除对象,如

>rm (x, y, x, ink, junk, temp, foo, bar)

所有在R会话期间创建的对象可以被存储到文件中以便在下一次R的会话中使用。在每个R会话结束之前都有机会存储当前可用的所有对象。如果你同意存储,则对象将被写到当前目录中的.RData文件,同时使用过的命令行将被写到.Rhistory文件。当下一次R在相同目录启动时,它将重启将对象信息和命令行历史从上述两个文件中载入。

强烈建议使用单独的工作目录用于R的不同统计分析。


2.简单操作;数值和向量(Vector)

2.1.向量和赋值

R针对命令数据操作,最简单的结构就是数值向量,即由一组有顺序的数值组成的单一实体对象。如

> x <-c(10.4, 5.6, 3.1, 6.4,21.7)

通过函数c()来创建一个包含5个数量的向量,并赋值给x对象。除了使用<-来赋值外,也可以通过=号和assign()函数来赋值。如上面的例子可写成

>assign("x", c(10.4, 5.6 3.1, 6.4, 21.7))

也可以反方向赋值,如

>c(10.4, 5.6, 3.1, 6.4, 21.7) -> x

如果一个命令仅包含表达式,则该值将被打印同时被丢弃,例如现在使用命令:

> 1/x

则x中的五个数值的倒数将被打印在终端,但x的内容不会被修改。如果使用

> y <- c(x, 0, x)

则会创建包含11个数值的向量y


2.2 向量运算

向量可以被用在算术表达式中,此时操作将在每个元素上进行。同一个表达式中的向量长度可以不一样,如果不一样则表达式值的长度将与最长的那个向量的长度相同。较短的向量中的元素将被重复循环计算。如

> v <- 2*x + y +1

将创建一个包括11个元素的向量v,2*x将被重复2.2次,y中的元素仅参与一次,而+1则重复了11次(与y的长度相同)。

初级的算术运算包括+, -, *, /和^ (幂),

同时常用的算术运算还有log, exp, sin, cos, tan, sqrt, 等。

max, min选择向量中最大的和最小的元素。

range(x)函数当于c(min(x), min(y)),即向量的范围

length(x)返回x的长度

sum(x)返回x中所有元素的和

prod(x)

mean(x) 求均值,等同于sum(x)/length(x)

var(x) 求方差,等同于sum((x-mean(x))^2)/(length(x)-1)。如果var()的参数是n-by-p矩阵则它的值是一个p-by-p样本方差矩阵,

sort(x)对向量元素进行升序排序,更灵活的排序可参考order()和sort.list()函数

注意,不管传入多少个向量对象,max和min总最返回最大/最小的元素,而maximum和minimum函数则返回向量对象,该对象的长度与传入向量的个数相同,分别存储每个向量中的最大/最小值。

复杂数值必须显示指定如sqrt(-17)将报一个NaN的警告,而sqrt(-17+0i)则将按复杂数值进行计算。


2.3 生成正则序列

R有多种方式可以生成序列数值,如1:30相当于c(1, 2, 3,....30)。冒号操作在表达式中具有高优先级,所以2*1:15将得到c(2, 4, ....,28, 30)。注意1:n-1与1:(n-1)的区别。

30:1则生成倒序向量

seq()函数是更通用的方式。它有五个参数,但一般仅指定部分参数。头两个参数指定序列的开始与结束,即sql(2,10) 相当于2:10。R中函数的参与还可以以命名的方式指定。如sql()函数中的头两个参数被命名为from=value 和to=value,因此可以调用seq(from=2, to=10)或者sql(to=10, from=2),它们都相当于2:10。sql()函数完整的参数为

sql(from=value, to=value, by=value, length=value, along=vector)

by 指定步长,默认为1

length 指定序列长度

>seq(-5, 5, by=.2) ->s3  #c(-5.0, -4.8,..... 4.8, 5.0)

>s4 <- seq(length=51, from=-5, by=.2) #s4=s3

第五个参数along=vector只能单独使用,用于创建一个包含1,2,.....,length(vector)的序列

相关的函数rep()用于通过多种复杂的方式来复制一个对象,简单的形式如

>s5 <- rep(x, times=5) #将x中的元素循环复制5份 

>s6 <- rep(x, each=5) #将x中的每个元素复制5份,然后复制下一个


2.4逻辑向量

R也允许操作逻辑向量。逻辑向量的值可以是TURE, FALSE和NA,前两个常被缩写为T和F,但是要记住T和F只是被默认设值为TRUE和FALSE的变量。逻辑向由条件表达式生成,如:

> temp <- x>13

逻辑操作符包括<, <=, >, >=, ==, !=, &, |, ! 九种。逻辑向量可以参与算术运算,这种情况下TRUE被视为1,而FALSE则被视为0。然而逻辑向量与数值向量还是不同的,后面将会讲到。


2.5 缺失值

某些情况下,向量中的值可能不是完全已知的。在统计场景中一旦元素或值是“不可用”或“缺失值”时,在向量中将使用NA值来替代。通常NA参与的所有的运算的结果也是NA。

函数is.na(x)用来返回与向量x长度相同,值为TRUE或FALSE的新向量,如果元素是NA则相应的返回TRUE,否则返回FALSE










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值