如何在符合条件的R数据框中找到列索引?

要查找与条件匹配的列索引,我们可以使用apply函数。此条件可以是列中的值大于或小于,小于,等于或其他任何数字变量条件。例如,如果我们要检查数据df的哪些列包含大于5的行中的值,则可以使用命令apply(df,1,function(x)which(x> 5))。

考虑以下数据帧-

示例

x1<-rnorm(20,2,0.05)
x2<-rnorm(20,2,0.65)
df1<-data.frame(x1,x2)
df1
输出结果
      x1      x2
1  2.083832  3.238437
2  1.999989  2.409343
3  1.908010  2.088710
4  1.914835  2.421812
5  2.080797  1.705331
6  1.977896  1.337907
7  1.987243  2.687881
8  2.002822  2.850734
9  1.932333  2.470400
10 1.955817  1.652495
11 2.085809  1.490701
12 1.986614  1.733392
13 1.975024  1.742006
14 1.983986  2.441801
15 1.991714  2.450637
16 1.947738  1.105244
17 2.052789  2.020752
18 1.989781  1.438219
19 2.023067  1.615221
20 2.086341  3.046352

检查每行df1的哪些列的值大于1.5-

apply(df1,1,function(x)which(x> 1.5))

[[1]]
x1 x2
 1 2
[[2]]
x1 x2
 1 2
[[3]]
x1 x2
 1 2
[[4]]
x1 x2
 1 2
[[5]]
x1 x2
 1 2
[[6]]
x1
1
[[7]]
x1 x2
 1 2
[[8]]
x1 x2
 1 2
[[9]]
x1 x2
 1 2
[[10]]
x1 x2
1 2
[[11]]
x1
1
[[12]]
x1 x2
 1 2
[[13]]
x1 x2
 1 2
[[14]]
x1 x2
1 2
[[15]]
x1 x2
 1 2
[[16]]
x1
1
[[17]]
x1 x2
 1 2
[[18]]
x1
1
[[19]]
 x1 x2
1 2
[[20]]
x1 x2
 1 2