首页 > 代码库 > R语言编程艺术# 数据类型向量(vector)
R语言编程艺术# 数据类型向量(vector)
R语言最基本的数据类型-向量(vector)
1、插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型、数值型(浮点数)、字符型(字符串)、逻辑型、复数型等。查看变量的类型可以用typeof(x)函数查询。
> #插入向量元素> x <- c(88,5,12,13)> x[1] 88 5 12 13> x <- c(x[1:3],168,x[4]) #插入168数字在13之前> x[1] 88 5 12 168 13>
2、删除向量中的元素,由于R中的向量是连续存储的,因此不能插入或删除元素(故上面的插入代码实际上重新创建了一个新的向量然后将x指向新的向量,类似于C中的指针)
> #删除向量中的元素 ^_^> x[1] 88 5 12 168 13> x <- c(88,5,168,13)> x[1] 88 5 168 13>
3、获取向量的长量
> #获取向量的长量> x[1] 88 5 168 13> length(x)[1] 4>
4、遍历向量里所有的元素
>#第一种方法 由于1:length(x)=(1,0),实际上做了两次迭代> first1function(x){for(i in 1:length(x)){ if (x[i]==1) break}return(i)}> y[1] 1 2 3 4 5 6 7 8> first1(y)[1] 1>
>#第二种方法 用seq函数生成等差序列,元素间隔为1,解决了第一种效率不高的方法> first2 <- function(x){+ for(i in seq(x)){+ if (x[i]==1) break+ }+ return(i)+ }> > first2(y)[1] 1>
5、向量与数组、矩阵 数组与矩阵包括列表,在某种意义上实际上都是向量。只不过它们还有额外的类属性。如:矩阵有行数和更数等。
> m <- matrix(c(1,2,3,4),nrow = 2,byrow = T)> m [,1] [,2][1,] 1 2[2,] 3 4> m + 10:13 [,1] [,2][1,] 11 14[2,] 14 17>
在这里2x2的矩阵m中存储为一个四元向量,即(1,2,3,4),并且以存储为两行,并以行排序,然后对它加上(10,11,12,13),得最新的矩阵,等效于下面代码
> m <- matrix(c(1,3,2,4),nrow = 2)> m [,1] [,2][1,] 1 2[2,] 3 4> m + 10:13 [,1] [,2][1,] 11 14[2,] 14 17>
6、循环补齐 在对两个向量使用运算符时,如果要求这两个向量具有相同的长度,R会自动循环补齐(recycle),即重复较短的向量,直到它与另一个向量长度相匹配
> c(1,2,4) + c(6,0,9,20,22)[1] 7 2 13 21 24Warning message:In c(1, 2, 4) + c(6, 0, 9, 20, 22) : longer object length is not a multiple of shorter object length>
等同于下列代码:
> c(1,2,4,1,2) + c(6,0,9,20,22)[1] 7 2 13 21 24>
#矩阵
> x <- matrix(c(1,2,3,4,5,6),nrow = 3)> x [,1] [,2][1,] 1 4[2,] 2 5[3,] 3 6> x + c(1,2) [,1] [,2][1,] 2 6[2,] 4 6[3,] 4 8>
#矩阵循环补齐
> x <- matrix(c(1,2,3,4,5,6),nrow = 3)> x [,1] [,2][1,] 1 4[2,] 2 5[3,] 3 6> y <- matrix(c(1,2,1,2,1,2),nrow = 3)> y [,1] [,2][1,] 1 2[2,] 2 1[3,] 1 2> x +y [,1] [,2][1,] 2 6[2,] 4 6[3,] 4 8>
相当于:
7、常用的向量运算 包括算术和逻辑运算、向量索引、创建向量等
#R是一种函数式语言,它的每个运处符(+ - * / 。。。)实际上都是函数
#加法> 2+3[1] 5> "+"(2,3)[1] 5>>c(1,2) + c(3,4)>[1] 4 6>> "+"(2,3,4)Error in `+`(2, 3, 4) : operator needs one or two arguments>#乘法> c(1,2) * c(3,4)[1] 3 8>#减法> c(3,4) - c(1,2)[1] 2 2>#除法> c(3,4) / c(1,2)[1] 3 2>#取余> c(3,4) %% c(2,3)[1] 1 1>
8、向量索引 R中最重要也是最常的一个运算符就是索引,使用它来选择给定向量中特定索引的元素来构成子向量。索引向量的格式是 X[Y](X,Y均是向量),它返回的结果是,X中索引为Y的那些元素。
R语言编程艺术# 数据类型向量(vector)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。