向量编辑
添加向量元素
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
[36] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
[71] 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
> x[101] <- 101
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
[36] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
[71] 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
> v <- 1:3
> v[c(4,5,6)] <- c(4,5,6)
> v
[1] 1 2 3 4 5 6
在向量中间插入一个元素。append函数
> append(x=v,values=99,after=1)
[1] 1 99 2 3 4 5 6
删除向量和删除向量中的某一个元素(删除某一个元素的逻辑,就是不显示其中的元素,然后重新赋予给该向量)
> l
one two three four
1 2 3 4
> l[-c(1:2)]
three four
3 4
> l <- l[-c(1:2)]
> l
three four
3 4
> rm(l)
> l
错误: 找不到对象'l'
直接修改其中个某个元素值
> y <- c(1:10)
> y
[1] 1 2 3 4 5 6 7 8 9 10
> names(y) <- c("one","two","three","four","five","six","seven","eight","nine","ten")
> y
one two three four five six seven eight nine ten
1 2 3 4 5 6 7 8 9 10
> y["four"] <- 101
> y
one two three four five six seven eight nine ten
1 2 3 101 5 6 7 8 9 10
***字符串向量和数值向量
&&&不要把字符串向量复制给数值向量,如果这样操作的话,数值向量会变为字符串向量。
向量运算
> x <- c(1:10)
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x=1
> x <- c(1:10)
> x+1
[1] 2 3 4 5 6 7 8 9 10 11
> x-7
[1] -6 -5 -4 -3 -2 -1 0 1 2 3
> x <- x+1
> x
[1] 2 3 4 5 6 7 8 9 10 11
> y <- seq(1,100,length.out = 10)
> y
[1] 1 12 23 34 45 56 67 78 89 100
> x+y###加法
[1] 3 15 27 39 51 63 75 87 99 111
> x*y###乘法
[1] 2 36 92 170 270 392 536 702 890 1100
> x^y###幂运算
[1] 2.000000e+00 5.314410e+05 7.036874e+13 5.820766e+23 1.039456e+35 2.115876e+47 3.213876e+60 2.697216e+74 1.000000e+89 1.378061e+104
> y%%x###求余数
[1] 1 0 3 4 3 0 3 6 9 1
> y%/%x###整除运算
[1] 0 4 5 6 7 8 8 8 8 9
当元素不一致的向量运算时,会循环补齐。(其中长向量的元素个数必须时另一个的倍数才可以运算,否侧会报错),我的电脑版本,它也运算了,计算到那就就显示到那里。
> z <- c(1:3)
> z
[1] 1 2 3
> z+x
[1] 3 5 7 6 8 10 9 11 13 12
Warning message:
In z + x : 长的对象长度不是短的对象长度的整倍数
向量逻辑判断
> x>5
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
> x==y
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> x %in% y
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
== 和 %in% 一样的。
abs()计算绝对值
sqrt()计算一个非负实数的平方根
exp()函数:计算以自然常数e为底的指数函数值
getwd())函数:获取当前工作目录的信息
setwd()函数:设定新的工作目录
assign()函数:相当于等号赋值 assign(“n”,10)就等于n=10
ceiiling()函数:向上取整数
floor()函数:向下取整数
> ceiling(c(-1.2,2.1))###向上取整数
[1] -1 3
> floor(c(-1.2,2.1))###向下取整数
[1] -2 2
> trunc(c(-1.2,2.1))##取整数
[1] -1 2
> round(c(-1.2,2.1))##保留小数,默认时没有!
[1] -1 2
> round(c(-1.2,2.1),digits = 1)###保留小数
[1] -1.2 2.1
> signif(c(-1.2,2.1),digits = 1)###有效数字
[1] -1 2
> vec <- 1:100
> vec
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
[91] 91 92 93 94 95 96 97 98 99 100
> sum(vec)#求和
[1] 5050
> max(vec)#最大值
[1] 100
> min(vec)#最小值
[1] 1
> range(vec)#最小值和最大值
[1] 1 100
> mean(vec)#平均值
[1] 50.5
> var(vec)#方差
[1] 841.6667
> sd(vec)#标准差
[1] 29.01149
> round(var(vec),digits = 2)#计算方差保留小数2位
[1] 841.67
> round(sd(vec),digits = 2)#计算标准差保留小数2位
[1] 29.01
> prod(vec)#乘的积
[1] 9.332622e+157
> median(vec)#中位数
[1] 50.5
> quantile(vec)#4分位数
0% 25% 50% 75% 100%
1.00 25.75 50.50 75.25 100.00
> quantile(vec,c(0.4,0.5,0.8))#计算不同的分位数
40% 50% 80%
40.6 50.5 80.2
> t <- c(1,4,2,5,7,9,6)
> which.max(t)#返回的是最大值的索引值
[1] 6
> which.min(t)#返回的是最小值的索引值
[1] 1
> which(t==7)#返回7的索引值
[1] 5
> which(t>5)#返回大于5的索引值
[1] 5 6 7
> which(t>2)#返回大于2的索引值
[1] 2 4 5 6 7
> t[which(t>2)]#通过索引值再重新返回元素值
[1] 4 5 7 9 6