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
相关推荐
兮兮能吃能睡2 天前
R语言术语(2)
开发语言·r语言
小火柴1232 天前
利用R绘制箱线图
开发语言·r语言
天桥下的卖艺者2 天前
R语言手搓一个计算生存分析C指数(C-index)的函数算法
c语言·算法·r语言
Tiger Z2 天前
《R for Data Science (2e)》免费中文翻译 (第10章) --- Exploratory data
r语言·数据科学·中文翻译
拓端研究室3 天前
视频讲解|Python遗传算法GA在车辆路径规划VRP数据优化中的应用
开发语言·人工智能·r语言
兮兮能吃能睡3 天前
资料片:R语言中常见的英文术语及其含义
开发语言·r语言
绵羊20233 天前
R语言绘制热图
开发语言·r语言
青铜弟弟5 天前
R语言利用Export包导出pptx格式的文件有错误的原因
开发语言·r语言
维维180-3121-14555 天前
R语言空间数据分析实战:机器学习预测、尺度转换与地统计建模
r语言·生态·环境·气象·气候·水文·地质
生信小窝5 天前
068B-基于R语言平台Biomod2集成模型的物种分布模型构建和数据可视化教程【2027】
开发语言·信息可视化·r语言