2.2 数字、字符与向量
2.2.1 向量
1.向量的赋值
x<-c(10.4,5.6,3.1,6.4,21.7)
2.向量的运算
x<-c(-1,0,2);y<-c(3,8,2)
v<-2*x+y+1
v
x*y
x/y
x^2
y^x
5%/%3
5%%3
exp(x)
sqrt(y)
sqrt(-2)
sqrt(-2+0i)
x<-c(10,6,4,7,8)
3.与向量有关的函数
min(x)
max(x)
range(x)
which.min(x)
which.max(x)
sum(x)
prod(x)
median(x)
sort(x)
var(x)
2.2.2 产生有规律的序列
1.等差数列
2.312:6
4:7.6
2*1:15
2.等间隔函数
seq(-5,5,by=.2)
seq(10,-5,2)
seq(length=5,from=-5,by=.2)
3.重复函数
x<-c(1,4,6.25);x
rep(x,times=3)
2.2.3 逻辑向量
x<-1:7
l<- x>3
z<- c(TRUE,FALSE,F,T);z
all(c(1,2,3,4,5,6,7)>3)
any(c(1,2,3,4,5,6,7)>3)
2.2.4 缺失数据
z<- c(1:3,NA);z
ind<-is.na(z);ind
z[is.na(z)]<-0;z
x<-c(0/1,0/0,1/0,NA);x
is.nan(x)
is.finite(x)
is.infinite(x)
is.na(x)
在x的四个分量中,0/1为0,只有在is.finite的检测下为真,其余均为假。0/0为不确定,但对函数is.nan和is.na的检测下均为真,这是因为不确定数据也认为是缺失数据。1/0为无穷,因此只在is.infinite检测下为真。NA为缺失数据,只有在is.na检测下为真,因为缺失数据并不是不确定数据,所以在is.nan检测下仍为假。
x[is.nan(x)]<-0;x
2.2.5 字符型向量
y<- c("er","sdf","eir","jk","dim")
y
paste("My","Job")
labs<-paste("X",1:6,sep = "");labs
paste("result.", 1:4,sep = "");
paste(1:10)
paste("Today is",date())
date()
paste(c('a','b'),collapse = '.')
2.2.6 复数向量
x<-seq(-pi,pi,by=pi/10)
y<-sin(x)
z<-complex(re=x,im=y)
plot(z)
lines(z)
Re()计算复数实部,Im()计算复数虚部,Mod()计算复数的模,Arg()计算复数的幅角
2.2.7 向量下标运算
x<- c(1,4,7)
x[2]
(c(1,3,5)+5)[2]
x[2]<-125;x
x[c(1,3)]<-c(144,169);x
1.逻辑向量
x<-c(1,4,7)
x<5
x[x<5]
z<- c(-1,1:3,NA)
z[is.na(z)]<-0
z
z<-c(-1,1:3,NA)
y<-z[!is.na(z)];y
(z+1)[(!is.na(z))&z>0]->x;x
y<-numeric(length(x))
y[x<0]<-1-x[x<0]
y[x>=0]<-1+x[x>=0]
x<- -10:10
plot(x,y)
2.下标的正整数运算
v<- 10:20
v[c(1,3,5,9)]
v[1:5]
v[c(1,2,3,2,1)]
c("a","b","c")[rep(c(2,1,3),times=3)]
3.下标的负整数运算,表示扣除相应的元素
v[-(1:5)]
4.取字符型值的下标向量
ages<- c(Li=33,Zhang=29,Liu=18)
ages
ages[1]
ages["Li"]
fruit<- c(5,10,1,20);fruit
names(fruit)<- c("orange","banana","apple","peach")
fruit