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
相关推荐
AAIshangyanxiu1 天前
R+VIC 模型融合实践技术应用及未来气候变化模型预测
r语言·qgis·气候变化·遥感水文·分布式水文模型·vic水文模型
天青色等烟雨..1 天前
基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析实践技术应用
数据分析·回归·r语言
asyxchenchong8882 天前
R语言的现代线性回归实践
r语言
Michelle80233 天前
24大数据 饼图复习
r语言
yingjie1103 天前
Scanpy vs Seurat 深度对比:Python 与 R 的单细胞分析框架谁更强?
开发语言·python·r语言·生物信息学·单细胞转录组·seurat·scanpy
Michelle80233 天前
24大数据 散点图复习
r语言
云上码厂4 天前
R 语言基于 lavaan 包实现结构方程模型 (SEM) 从环境配置到建模绘图全流程实战
开发语言·r语言
不务正业的小主治6 天前
ezygene-多种算法计算免疫评分
人工智能·r语言·简析基因·ezygene·免疫分析
Omics Pro6 天前
基因泰克:检测级虚拟细胞基准!大语言模型+智能体
大数据·数据库·人工智能·机器学习·语言模型·自然语言处理·r语言
Omics Pro7 天前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言