
R语言的which函数主要是用于条件筛选,在R语言里面用的非常多,因为很多时候我们都需要筛选满足一些特定条件的数据记录。
向量
> a <- c(2,4,5,2,2,3)
> which(a == 2)
[1] 1 4 5
这里返回了向量a里面等于2的下标是1,4,5;还可以根据不等号筛选,比如:
> which(a>3)
[1] 2 3
这就筛选出了a里面大于3的数据的下标,怎么把这些数据取出呢?可以这样
> a[which(a>3)]
[1] 4 5
这样就取出了实际数据,当然了,有时候也需要取出下标!
矩阵
> mat <- matrix(c(1:24),nrow = 4,byrow = FALSE)
我们想取出第一列大于2的所有数据行,应该怎么做呢?

可以考虑这样做!
1、找出第一列大于2的行数;
2、取出数据行;

数据框
实际操作中处理最多的就是数据框了,因为我们学习语言总归是要处理实际问题的,实际数据一般就是一个二维数据表,一般就是一个数据框!
> dat <- data.frame(id=c(1:5),name=c('a','b','c','d','f'),score=c(68,97,89,76,82))
> dat
id name score
1 1 a 68
2 2 b 97
3 3 c 89
4 4 d 76
5 5 f 82
我们这里要找出成绩(score)大于80的数据记录,怎么做呢?
其实,这与矩阵的做法类似,几乎一样,其实矩阵只是要求装同种元素,一般都是数值型数据,而数据框就是一个大熔炉了。
1、成绩大于80的行;
2、根据行取出数据;
> dat[which(dat$score>80),]
id name score
2 2 b 97
3 3 c 89
5 5 f 82
这样就取出了,成绩大于80的记录了。
觉得不错,记得点赞哦,也可以分享、让更多的人看到!







