R语言中取向量子集

在R中,想要给向量取子集,就是在向量的后面加上[]符号。通过在[]符号里填写数据来控制取向量的哪部分子集。

一般[]符号里可以有四种类型的内容:

第一种:整数型向量

这些向量要么全是正值,要么全是负值,要么是0。你不能有正有负。

这个整数就标记了需要取值的位置。

正值

比如:

r 复制代码
x <- c("a","b","c","d")
x[c(3,2,1)]
[1] "c" "b" "a"

你瞧,通过c(3,2,1)这个向量,我就取出了x这个向量中的第3位,第2位,第1位。

不仅如此,这些位置还是可以重复的。

负值

当给了一个负数向量,这不代表是倒着取值,而是把这些值去掉。

比如:

r 复制代码
x[c(-3,-2,-1)]
[1] "d"

第二种:字符型向量

如果你的向量的值都是有名字的,那可以把它们的名字组成一个向量进行取值。

r 复制代码
x <- c("one"=1,"two"=2,"three"=3)
x[c("one","two")]
one two 
  1   2 

第三种:空值

如果[]里面啥也没有,这代表取全部的向量值。从这个角度看,这个用法没啥用。

比如:

r 复制代码
> x <- c("one"=1,"two"=2,"three"=3)
> x[]
one   two three 
  1     2     3 
> x
one   two three 
  1     2     3 

瞧,x和x[]没区别。

但是,在多维的向量中,这个功能就很常用,它能让我们取某n行所有列,或某n列所有行。

比如我们建立一个五行三列的数据框。

r 复制代码
x <- data.frame(col1=c(1,2,3,4,5),col2=c("a","b","c","d","e"),col3=c("one","two","three","four","five"))

在构建过程中,我们知道,这个数据框是由三个等长的向量组成的。每个向量代表数据框的一个列。

那如果我们想取这个数据框的第一行所有列,你会怎么取呢?

r 复制代码
> x[1,1:3]
  col1 col2 col3
1    1    a  one

在以上的方式中我们通过1:3来限定列的范围是第一列到第三列。但这样很麻烦,更简单的方法是:

r 复制代码
> x[1,]
  col1 col2 col3
1    1    a  one

同理,如果你就不想要第三列。你想要所有行。那你可以这样写:

r 复制代码
> x[,-3]
  col1 col2
1    1    a
2    2    b
3    3    c
4    4    d
5    5    e

第四种:逻辑值

在取一个向量的子集时,我们会在[]中放上与向量等长的一个逻辑向量,结果会把对应为TRUE的子集取出来。

比如:

r 复制代码
> x <- c("a","b","c","d","e")
> x[c(TRUE,FALSE,TRUE,FALSE,TRUE)]
[1] "a" "c" "e"

因为这个,我们常在[]放一些比较操作:

r 复制代码
> x <- c(1,2,3,4,5)
> x[x>3]
[1] 4 5

大家要理解这个操作,一定要知道R语言是按照向量来操作的。当你说x>3时,是用x的每一个元素和3来比较,最后返回一个逻辑值向量。

r 复制代码
> x>3
[1] FALSE FALSE FALSE  TRUE  TRUE
相关推荐
开开心心就好18 小时前
系统管理工具,多功能隐私清理文件粉碎工具
java·网络·windows·r语言·电脑·excel·symfony
kisshuan1239621 小时前
【植物图像分析系列】:基于Cascade R-CNN的叶片气孔状态识别与分类任务详解_1
分类·r语言·cnn
Tiger Z4 天前
《R for Data Science (2e)》免费中文翻译 (第17章) --- Dates and times(1)
r语言·编程·数据科学
杜子不疼.4 天前
计算机视觉热门模型手册:Faster R-CNN / YOLO / SAM 技术原理 + 应用场景对比
人工智能·计算机视觉·r语言·cnn
Davina_yu4 天前
Windows 下升级 R 语言至最新版
开发语言·windows·r语言
青春不败 177-3266-05205 天前
基于R语言生物信息学大数据分析与绘图技术应用
数据分析·r语言·生物信息·生信·高通量
Catherinemin5 天前
【R语言】2.注释&基础运算
开发语言·r语言
邢博士谈科教5 天前
TCGA单基因高低分组的差异分析后的GSEA-GO和KEGG富集分析教程
数据分析·r语言
Catherinemin6 天前
【R语言】1.安装&基础语法
开发语言·r语言
Tiger Z6 天前
R 语言科研绘图 --- 3D绘图-汇总1
r语言·论文·科研·绘图·研究生