R语言:向量与赋值

From:http://bigdata.iteye.com/blog/1777022

向量和赋值

R 在已经命名的数据结构上起作用。其中,最简单的结构就是由一串有序数值构成的数值向量。

x <- c(1,2,3,4,5,6)

这是一个用函数c()完成的赋值语句。(<-是赋值符号)

注:等同于assign(“x”,c(1,2,3,4,5,6))

向量运算

基本的算术运算符就是常用的+,-,*,/和做幂运算的^。另外还包括常用的数学函数,如log,exp,sin,cos,tan,sqrt等等。

Min(x)和max(x):分别给出向量x最小值和最大值的函数;

Range(x)函数:是一个得到长度为2的向量,即c(min(x),max(x));

Length(x)函数:给出向量x的元素个数;

Sum(x)函数:计算向量x中元素的累加和;

Prod(x)函数:得到x向量中元素的乘积;

Mean(x)函数:计算均值,等价于sum(x)/length(x);

Var(x)函数:计算样本方差,等价于sum((x-maen(z))^2)/(length(x)-1) ;(如果var()的参数是一个n*p的矩阵,则将该矩阵行与行之间看作是相互独立的p-变量的样本向量,从而得到一个p*p的样本协方差矩阵);

Sort(x)函数:返回一个和x长度一样但元素以升序排列的向量;(order()和sort.list()排序功能更强大)

生成正则序列

R有一些列产生常用数列的工具。

常用的如,1:30等价于向量c(1,2,……,29,30);

注:在R表达式中,冒号优先级别最高。

函数seq() 是数列生成中最为常用的工具。它有五个参数,仅部分参数需要每次

都设定。起始的两个参数,表示一个数列的首尾。如果只是给定这两个值,则和冒号

运算符的效果完全一样了。如seq(2,10) 等价于2:10。

seq() 和其他许多R 函数的参数一样都可以用参数命名方式给定。在这情况下,

参数的顺序可以是任意的。这样,前两个参数就可以用from=value 和to=value 方式

设定;因此seq(1,30),seq(from=1, to=30),seq(to=30, from=1) 同1:30 完全一

样。seq() 随后的两个参数是by=value 和length=value;它们分别表示这个数列的步

长和长度。如果二者没有设定,默认值就是by=1(步长为1)。

例如:seq(-5,5,by=.2) -> s3,等价于将向量c(-5.0,-4.8,-4.6,……,4.6,4.8,5.0)赋给s3;类似的是,s4 <- seq(length=51, from=-5, by=.2),将在s4中产生一样的向量。

第五个参数是along=vector。使用这个参数时,它必须是唯一的4,它可以创建数

列1, 2, ..., length(vector),或者是空数列(在向量vector为空时)。

Rep()函数:可以用各种复杂的方式重复一个对象。最简单的方式:s5 <- rep(x, times=5),这种方式先把x 的完整拷贝五次,保持x 的数列顺序,逐一放在s5 中。另一种有用的

方式是s6 <- rep(x, each=5),这种方式把x 中的每个元素都重复五次,然后将重复五次的元素逐一放入。

逻辑向量

逻辑向量元素可以被赋予的值有TURE,FALSE,NA(“不可得到”)。前两个值可以分别简写为T 和F。

注意T 和F 仅仅默认设置为TRUE 和FALSE 的等价变量,不是系统保留字(reserved

word),因此可以被用户重写。正因为这样,你应该尽量使用属于系统保留字的TRUE和FALSE。

R 的逻辑运算符是<,<=,>,>=,以及判断是否严格相等的== 和判断不等的!=。此外,如果c1 和c2 是逻辑不等式,那么c1 & c2 是它们的交集运算(“与”),c1 | c2 是并集运算(“或”),!c1 是c1 的非运算。

注:在常规的算术运算中采用逻辑变量,它们会被强制转换成数值变量,FALSE 变成0 ,TRUE 变成1。

缺损值

在某些情况下,向量的元素可能有残缺。

当一个元素或者值在统计的时候“不可得到”(not available)或者“值丢失”(missing value),相关位置可能会被保留并且赋予一个特定的值NA。任何含有NA 数据的运算结果都将是NA。

函数is.na(x) 返回一个和x同等长度的向量。它的某个元素值为TRUE 当且仅当x中对应元素是NA。

数值计算会产生第二种“缺损”值,也称为非数值(Not a Number)NaN。

字符向量

函数paste() 可以有任意多的参数,并且把它们一个接一个连成字符串。

例如,labs <- paste(c("X","Y"), 1:10, sep="")

使得labs 变成一个字符向量。

c("X1", "Y2", "X3", "Y4", "X5", "Y6", "X7", "Y8", "X9", "Y10")

索引向量

逻辑向量:这种情况下,索引向量必须和被挑选元素的向量长度一致。向量中对应索引向量元素为TRUE的元素将会被选中,而那些对应FALSE的元素则被忽略,例如,y<-x[!is.na(x)]。这将创建(或重建)一个含x 中非缺省且次序不变的元素的对象y。注意,如果x含有缺省值,y 在长度上将会比x短。

(x+1)[(!is.na(x)) & x>0] -> z

将创建一个对象z 并且把向量x+1 的值赋给它,其中要求x 中对应的元素既非缺省又是正值。

正整数向量:如x[6]表示x 的第六个元素;

x[1:10],选择x的前10个元素(我们假定length(x)长度不小于10);

c("x","y")[rep(c(1,2,2,1), times=4)],会产生一个长度为16,由"x", "y", "y", "x" 重复4次而构成的向量。

负数向量:这种索引向量指定被排除的元素而不是包括进来。因此,y <- x[1(1:5)] 将x除开始5个元素外的其他元素都赋给y。

字符串向量:这可能仅仅用于一个对象可以用name属性来识别它的元素。这种情况下,名字向量的子向量可以像上面第二条提到的正整数标签一样使用。

> fruit <- c(5, 10, 1, 20)

> names(fruit) <- c("orange", "banana", "apple", "peach")

> lunch <- fruit[c("apple","orange")]

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值