向量是R语言最基本的数据类型。

单个数值(标量)其实没有单独的数据类型,它只不过是只有一个元素的向量。

x <- c(1, 2, 4, 9)

x <- c(x[1:3], 88, x[4])   #在最后一个数前面插入一个数值88,可以看到用x[4]可以取出第4个元素,用x[1:3]可以取出前3个元素

typeof(x)    #查看向量里的元素的类型,注意默认是double。[1] "double"

mode(x)    #r语言中变量类型称为模式(mode)。[1] "numeric"

length(x)  #获取向量的长度

R不需要提前申明变量,大小写敏感,数组是从1开始。

冒号运算符

1:4     #R是一种函数式语言,冒号也是一种运算符(实际上这是一种中置运算符的表示法),可以产生序列。[1] 1 2 3 4

":"(1, 4)    #与1:4是等价的,用引号引起来,就是一种函数名了,不过这种写法看上去比1:4怪异多了

5:1 #结果:[1] 5 4 3 2 1

1:10 - 1 #冒号的优先级比加减运算要高,实际上就是(1:10) - 1,结果: [1] 0 1 2 3 4 5 6 7 8 9 
1:(10-1) #结果:[1] 1 2 3 4 5 6 7 8 9

循环补齐recycle

这种特性在其它语言中以前还没有看见过!超强的向量运算功能!

y <- c(1,2,3) + 4     # 单个的数值4会被补齐为c(4,4,4),最后结果为c(5,6,7)

c(1,2,3) * c(4,5,6)   # 结果:[1]  4 10 18,这里表示的两个向量中的元素分别相乘,如果想求向量的点积(dot prod),就需要用这个%*%函数了

c(1,2,3) %*% c(4,5,6)  #结果是一个1x1的矩阵,其中只有一个元素14

c(1,2,3) * c(4,5,6,7) #结果:[1]  4 10 18  7。同时给出警告信息:长的对象长度不是短的对象长度的整倍数

取模运算%%

c(7,8,9) %% 3  #结果:[1] 1 2 0

向量索引

普通的语言中索引只能是正整数,但这里的索引可以是向量,还可以是负数。严格说来这不能叫索引,而是筛选操作,看后面的filtering

x <- c(1,3,5,7,9)

x[2] #结果:[1] 3

x[c(5,4,3,2,1)]   #结果为:[1] 9 7 5 3 1

x[sample(1:5)]  #把1,3,5,7,9乱序排列,每次运行你会得到一个不同的结果

x[-1] #[1] 3 5 7 9,把第一个元素除掉,这是我非常喜欢的语法特性!

x[1:3] #结果:[1] 1 3 5

seq()创建向量

seq(from=12, to=30, by=3)    # 也可以写成: seq(12,30,3) 
[1] 12 15 18 21 24 27 30

seq(from=1.1, to=2, length=10) 
[1] 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0

x <- c(1,2,4,8) 
seq(x) 
[1] 1 2 3 4

seq(1,5)与1:5是一个意思

rep重复向量常数

rep(8, 4) 
[1] 8 8 8 8

rep(1:3, 2) 
[1] 1 2 3 1 2 3

rep(1:3, each=2) 
[1] 1 1 2 2 3 3

all()和any()

x<-(1:10) 
any(x>8) #只要向量中有一个大于8,就返回真 
[1] TRUE 
all(x>8) #所有都大于8,才返回真 
[1] FALSE

向量化

w <- function(x) return (x+1)   #加号运算符支持向量,所以自定义的函数w也是向量化的!看上去简单的x+1,但我们已经写出了一个向量函数

w(1) #这是我们最熟悉的函数调用 
[1] 2

w(c(1,3,5)) #可以对向量进行运算 
[1] 2 4 6

NA与NULL

在统计过程中,经常会遇到缺失值,称为NA,即Not Available。

R语言中许多函数可以忽略NA值。

> x <- c(1,2,NA,4) 
> mean(x)  #有缺失值,无法计算平均值 
[1] NA

> mean(x, na.rm=TRUE) #忽略NA值 
[1] 2.333333

> mean(c(1,2,NULL,4))   # NULL值会自动略过 
[1] 2.333333

> length(c(1,2,NA,4))    #统计个数时NA被计算在内 
[1] 4

> length(c(1,2,NULL,4)) 
[1] 3

筛选filtering

有点像索引,因为也是放在[]里,可以把满足一定条件的元素取出来。

> z <- 1:10 
> z 
 [1]  1  2  3  4  5  6  7  8  9 10

> z[z%%2==0] 
[1]  2  4  6  8 10

> z%%2    #取模 
 [1] 1 0 1 0 1 0 1 0 1 0

> z%%2==0    #注意这里的0被自动循环补齐 
 [1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE

> x<-c(1,3,5,6,9) 
> x[x>3] <- 0   #把大于3的数值都置为0 
> x 
[1] 1 3 0 0 0

subset也是筛选,区别在于处理NA的方式上 
> x<-c(1,2,NA,4,5) 
> x[x>3] 
[1] NA  4  5 
> subset(x, x>3)    #自动把NA剔除掉了 
[1] 4 5

which()可以找到满足条件的元素的位置 
> x <- c(5,  2,  -3, 9, 1) 
> x[x*x>8] 
[1]  5 -3  9 
> which(x*x>8) 
[1] 1 3 4

向量化的ifelse()

> x <- c(5, 2, -3, 9, 1) 
> ifelse(x>3, 2*x, 3*x) 
[1] 10  6 -9 18  3

判断向量是否相等

> x <- 1:3 
> y <- c(1,3,4) 
> all(x==y) 
[1] FALSE 
> identical(x,y) 
[1] FALSE

注意1:3是整数,c(1,2,3)是浮点数,它们不相等: 
> identical(1:3, c(1,2,3)) 
[1] FALSE 
> typeof(1:3) 
[1] "integer" 
> typeof(c(1,2,3)) 
[1] "double"

给向量元素命名names()

> workdays <- 1:5 
> names(workdays) <- c("mon", "tue", "wed", "thu", "fri") 
> workdays 
mon tue wed thu fri 
  1   2   3   4   5

可以用名称来引用元素 
> workdays["wed"] 
wed 
  3

----==== Email: slofslb (GTD) qq.com 请将(GTD)换成@ ====---- 
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者:申龙斌的程序人生

---- 魔方、桥牌、象棋、游戏人生... 
---- BASIC、C++、JAVA、C#、Haskell、Objective-C、Open Inventor、程序人生... 
---- GTD伴我实现人生目标 
---- SeismicPro地震剖面显示程序 
---- Eclipse油藏数值模拟二进制文件格式解析和格式转换软件

本文转自申龙斌的程序人生博客园博文,原文链接:http://www.cnblogs.com/speeding/p/3537947.html,如需转载请自行联系原作者

http://www.cnblogs.com/speeding/

R语言学习笔记:向量相关推荐

  1. R语言学习笔记——向量

    说明:报了学校的课<R语言与统计分析>,随手分享一下课堂笔记.最近比较忙所以就不整理了直接发叭,一切随缘,如果感兴趣的话可以自己测试代码输出结果. 直接创建向量 x<-1:5 x&l ...

  2. R语言学习笔记(1~3)

    R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...

  3. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

  4. R语言学习笔记——入门篇:第三章-图形初阶

    R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...

  5. R语言学习笔记 06 岭回归、lasso回归

    R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...

  6. R语言学习笔记(八)--读写文件与网络爬虫

    R语言学习笔记(八) 1 工作路径 2 保存R对象 3 Scan函数 3-1 从控制台读取数据 3-2 从txt文件读取数据 3-3 从url读取数据 4 按行读写文本文件 5 读取文本文件(txt. ...

  7. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  8. R语言学习笔记 07 Probit、Logistic回归

    R语言学习笔记 文章目录 R语言学习笔记 probit回归 factor()和as.factor() relevel() 案例11.4复刻 glm函数 整理变量 回归:Logistic和Probit- ...

  9. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  10. R语言学习笔记(三)多元数据的数据特征、相关分析与图形表示

    文章目录 写在前面 独立性检验 χ2\chi^2χ2独立性检验 Fisher独立性检验 Cochran-Mantel-Haenszel χ2\chi^2χ2独立性检验 相关性分析 相关性检验 相关性检 ...

最新文章

  1. 青龙羊毛——闪电世界(合集篇)
  2. sap-生产订单的成本理解
  3. 集合对象的声明和初始化
  4. 如何分析SAPPSPRO-S_MAT_ENHANC_COMM问题
  5. 1461B. Find the Spruce
  6. java logic逻辑,logicJava的复习
  7. 10大热门人工智能开源工具(框架)
  8. 80多个Ajax解决方案
  9. MAX脚本发送贴图的另外一个方式
  10. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十九) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏②...
  11. 游戏筑基开发之函数指针及main函数利用指针传参(C语言)
  12. 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
  13. 十五、Oracle学习笔记:序列(用于表字段值自增)
  14. pc 浏览器最小字体12px
  15. 如何利用软文营销将好品牌故事?
  16. 初中英语语法(010)-分词
  17. 柳州铁一中机器人_柳州铁路第一中学的办学成果
  18. torch.norm的理解
  19. django学习笔记(五)------path
  20. Kotlin | 关于 Lazy ,你应该了解的这些事

热门文章

  1. 从深圳回武汉的面试感想以及一些面试题
  2. 马云携阿里17位创始人及合伙人捐赠浙大一院5.6亿,杭州渐成中国硅谷
  3. 如何编写一个全新的 Git 协议
  4. javaList容器中容易忽略的知识点
  5. [2778]小明的花费预算 (二分查找)SDUT
  6. (转)启动linux远程图形界面登录,vnc!!
  7. 如何ping端口_复刻smartbits的国产网络性能测试工具minismb-如何配置Ping报文
  8. SmartNIC/DPU — 应用场景与功能特性
  9. AWS — AWS 上的 5G 网络
  10. pip install 报错:Versioning for this project requires either an sdist tarball, ...