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),实际上做了两次迭代
> first1
function(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 24
Warning 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的那些元素。 

时间: 2024-10-19 13:17:27

R语言编程艺术# 数据类型向量(vector)的相关文章

R语言编程艺术(2)R中的数据结构

本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ========================================================================= R语言最基本的数据类型就是向量(vector),单个数值和矩阵都是向量的一种特例. 声明:R中不需要声明变量,但是注意函数式语言的特性,如果读写向量中的元素时,R事先不知道对象是向量的话,则函数没有执行的对象.如下代码是无法工作的: y[1]

R语言编程艺术学习(1)

###R语言编程艺术===== ####chr1.快速入门====== #交互模式 mean(abs(rnorm(100))) rnorm(10) source("z.R") #批处理模式 setwd("/Users/tang/Downloads/R语言编程艺术/") #shell命令运行脚本 #R CMD BATCH z.R data() ##查看内置数据集 mean(Nile) sd(Nile) hist(Nile) hist(Nile, breaks = 12

R语言编程艺术(1)快速入门

这本书与手上其他的R语言参考书不同,主要从编程角度阐释R语言,而不是从统计角度.因为之前并没有深刻考虑这些,因此写出的代码往往是一条条命令的集合,并不像是"程序",因此,希望通过学习这本书,能提高编程效率,以及让自己更像是一个"程序员". 本文对应<R语言编程艺术>第1章:快速入门. 生成向量的函数c(),这里c表示"连接"(concatenate) 打印列表方式: print(listname) str(listname) 第一种将

R学习:《R语言编程艺术》中文PDF+英文PDF+代码

R语言是流行的用于数据处理和统计分析的脚本语言.考古学家用它来跟踪古代文明的传播,医药公司用它来探索哪种药物更安全.更有效,精算师用它评估金融风险以保证市场的平稳运行.总之,在大数据时代,统计数据.分析数据都离不开计算机软件的支持,在这方面R语言尤其出色. <R语言编程艺术>从最基本的数据类型和数据结构开始,到闭包.递归和匿名函数等高级主题,由浅入深,讲解细腻,读者完全不需要统计学的知识,甚至不需要编程基础.而书中提到的很多高级编程技巧,都是作者多年编程经验的总结,对有经验的开发者也大有裨益.

分享《R语言编程艺术》+PDF+源码+Norman Matloff+陈堰平 邱怡轩 潘岚锋 熊熹

下载:https://pan.baidu.com/s/1RSO_ZHXcaLFDNuPmkhFJdQ 更多资料分享:http://blog.51cto.com/14087171 <R语言编程艺术>中文版PDF+英文版PDF+源代码 中文和英文两版对比学习, 带目录书签: 配套源代码: 经典书籍,讲解详细. 原文地址:http://blog.51cto.com/14087171/2321667

R语言编程艺术_第六章_因子和表

一.因子与水平 1.简单直接的认识因子和水平 因子可以简单的理解为包含了更多信息的向量.即因子=向量 + 水平.(当然实际上它们内部机理不同).水平是对于向量中不同值的记录,以下面代码为例: > x <- c(5, 12, 13, 12) > x [1] 5 12 13 12 > xf <- factor(x) > xf [1] 5 12 13 12 Levels: 5 12 13 但是我们说到因子的长度时,则定义为数据的长度,而非水平的个数. > length(

《R语言编程艺术》中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/123-dCrwFtFCvWeVM5O4b5w 中文和英文两版对比学习, 带目录书签: 配套源代码: 经典书籍,讲解详细. 原文地址:http://blog.51cto.com/3215120/2307075

R语言入门心得(3) -- 向量相关

向量定义 R在实际应用中比较常用的一个对象就是向量(Vector).向量的创建格式为 向量名 = c(x1,x2,x3,…..)  或  向量名 <- c(x1,x2,x3,…..) 或  c(x1,x2,x3,…..) -> 向量名 或  Assign("向量名", c(x1,x2,x3,…..)),c()为向量赋值函数,c()可以有任意多个参数,而起返回值则是一个把这些参数首尾相连形成的向量.你可以在命令行中输入?c或者help(c)来查看函数的详细信息.例如我们要创建

R语言编程中的常见错误

R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面.? 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第一个是正确的).? 忘记使用必要的引号.install.packages("gclus")能够正常执行,然而Install.packages(gclus)将会报错.? 在函数调用时忘记使用括号.例如,要使用help()而非help.即使函数无需参数,仍需加上().? 在Windows上,路