向量

1 向量的创建
> c( )
NULL

> vector = 2:5
> vector
[1] 2 3 4 5

# 命名
> names(vector) = c('num1', 'num2', 'num3', 'num4')   
> vector
num1 num2 num3 num4 
   2    3    4    5 

# 指定间隔生成向量
> seq(2,3, by = 0.5)
[1] 2.0 2.5 3.0

# 重复向量
> rep(1:4,2)
[1] 1 2 3 4 1 2 3 4

#  重复向量中每个元素
> rep(c('a','b'),each = 3)
[1] "a" "a" "a" "b" "b" "b"

# 用rep()函数创建向量
> c(rep('a', 3), rep('b', 4))
[1] "a" "a" "a" "b" "b" "b" "b"


2 选择向量中的元素
# 创建向量
> x = 1:10
> names(x) = paste('name', 1:10, sep = '')
> x
 name1  name2  name3  name4  name5  name6  name7  name8  name9 name10 
     1      2      3      4      5      6      7      8      9     10
2.1 通过位置选择
 > x[1]
name1 
    1 
    
> x[-1]
 name2  name3  name4  name5  name6  name7  name8  name9 name10 
     2      3      4      5      6      7      8      9     10 
     
> x[2:4]
name2 name3 name4 
    2     3     4 
    
> x[-(2:4)]
 name1  name5  name6  name7  name8  name9 name10 
     1      5      6      7      8      9     10 
     
> x[c(2,4)]
name2 name4 
    2     4 
 
2.2 根据值选择向量
> x[x == 10]
name10 
    10 

> x[x > 5 & x < 8]
name6 name7 
    6     7 

> x[x %in% c(2:5)]
name2 name3 name4 name5 
    2     3     4     5 

> x[c('name1', 'name2')]
name1 name2 
    1     2

 
2.3 返回元素在向量中的索引
> which(x > 5)
 name6  name7  name8  name9 name10 
     6      7      8      9     10 
     
> which.max(x)
name10 
    10 
    
> which.min(x)
name1 
    1 
3 向量的操作
3.1 数值向量的运算
x + y
x - y
x / y
x ** y 
x %% y       # 求余
x %/% y        #  整除
abs(x)        # 求绝对值
sqrt(x)       # 平方根
log(2,x)
exp(x)

ceiling(x)      # 取顶
floor(x)        # 取底
trunc(x)        # 取整
round(x, 2)    # 四舍五入,保留2位小数

sum(x)
mean(x)
max(x)
min(x)
range(x)
var(x)      # 方差
prod(x)     # 连乘 
median(x)   # 中位数
quantile(x)     #计算分位数
quantile(x, c(0.2, 0.3, 0.4))      #特定分位数
3.2 数值向量的排序、去重
> x = c(3,5,4,1,6,7,8)

# 返回排序后的向量
> sort(x) 
[1] 1 3 4 5 6 7 8

# 返回元素对应的排名,升序
> rank(x)
[1] 2 4 3 1 5 6 7

# 返回排序后的向量元素在原向量中的索引,升序
> order(x)
[1] 4 1 3 2 5 6 7

# 去重复
> a = c(2,3,2,2)
> unique(a)
[1] 2 3
3.3 字符型向量的操作
> x = c('aa_11', 'ab_22', 'cc_33')

# 输出字符串的长度
> nchar(x)
[1] 5 5 5

# 输出向量的长度
> length(x)
[1] 3

# 字符串大写
> toupper(x)
[1] "AA_11" "AB_22" "CC_33"

# 字符串小写
> tolower(x)
[1] "aa_11" "bb_22" "cc_33"

# 提取向量中的字符串的子串
> substr(x, 1, 3)
[1] "aa_" "ab_" "cc_"

# 按"_"分割字符串,生成列表
> strsplit(x, '_')
[[1]]
[1] "aa" "11"

[[2]]
[1] "ab" "22"

[[3]]
[1] "cc" "33"

# 查看字符串是否在向量中,返回位置
> grep('a',x)
[1] 1 2

3.4 向量的交集、并集、补集
> x = 2:5
> y = 3:6

# 取交集
> intersect(x, y)
[1] 3 4 5

# 取补集
> setdiff(x,y)
[1] 2

> y[match(x, y)]
[1] NA  3  4  5

> x[x %in% y ]
[1] 3 4 5

# 向量后面添加元素
> a = 2:5
> a1 = append(a, 1:10, length(a))
> a1
 [1]  2  3  4  5  1  2  3  4  5  6  7  8  9 10

# 不同长度向量合并为数据框
mylist = list(a = 1:3,b = 2:6,c = 2:8)
data.frame(lapply(mylist, "length<-", max(lengths(mylist))))
> data.frame(lapply(mylist, "length<-", max(lengths(mylist))))
   a  b c
1  1  2 2
2  2  3 3
3  3  4 4
4 NA  5 5
5 NA  6 6
6 NA NA 7
7 NA NA 8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值