R编程中的which()函数
R中的which()函数返回满足给定条件的值的位置或者索引。
R中的which()函数为您提供值在逻辑向量中的位置。
该位置可以是行,列甚至向量之类的任何东西。
R中which()函数的语法
which():R中的哪个函数返回值在逻辑向量中的位置。
which(x,arr.ind = F,useNames = F)
其中:
X =输入逻辑向量。
Arr.ind =如果x是数组,则返回数组索引。
useNames =表示数组的维名称。
which()函数的简单示例
好了,您对哪个功能及其工作性质有了定义。
现在,让我们实际应用我们学到的东西。
让我们看看它是如何工作的。
which(letters=="p")
16
which(letters=="n")
14
which(letters=="l")
12
"字母"是一个内置常数,英文字母的所有26个字母顺序排列。
上面看到的输出代表每个字母在数据框中的位置。
如您所见,字母" p"在字母表中排第16位,而" l"和" n"分别排在第14位和第12位。
现在,让我们学习如何使用which函数。
与向量一起使用which()函数
现在,我们用R语言创建一个矢量,然后使用which函数进行位置跟踪。
#creating a vector df<- c(5,4,3,2,1)
#Postion of 5 which(df==5)
1个
#Position of 1 which(df==1)
5
#Position of values greater than 2 which(df>2)
1 2 3
大! R中的which()返回值在给定输入中的位置。
您还可以使用该函数传递特定条件,并获得与条件匹配的输出位置,如上一个示例所示。
在数据帧中使用which()函数
现在,让我们看看如何针对R语言中的数据框应用which函数。
df<-datasets::BOD df
Time demand 1 1 8.3 2 2 10.3 3 3 19.0 4 4 16.0 5 5 15.6 6 7 19.8
为此,我们使用的BOD数据集包括2列,即时间和需求。
这是另一个内置数据集。
让我们使用which函数,并尝试查找值在数据中的位置。
which(df$demand=='10.3')
2
您也可以向which()函数输入值列表。
看下面的例子,我试图从数据框中找到两个值的位置。
which(df$demand==c(8.3,16.0))
1 4
使用which()在数据框中查找具有数值的列
您甚至可以使用which()函数在包含数字数据的数据中查找列名。
让我们看看它如何以R语言运行。
为此,我们使用"虹膜"数据集。
df<-datasets::iris df
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 11 5.4 3.7 1.5 0.2 setosa
test<-which(sapply(df,is.numeric)) colnames(df)[test]
"Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
输出显示虹膜数据集中有5列。
其中,数字列为4,类别(种类)为1。
我们在R中使用了sapply函数以及此处的which()方法。
根据输入条件,which()函数仅返回数字列的名称。
如果您是数据分析师,那么which()函数对您来说将是无价的。
R中具有Matrix的哪个函数
最后,我们到达R中的矩阵。
好了,您可以使用R语言中的which()函数来获取值在矩阵中的位置。
您还将在本节中了解arr.index参数。
第一件事–创建矩阵
df<-matrix(rep(c(1,0,1),4),nrow = 4) df
[,1] [,2] [,3] [1,] 1 0 1 [2,] 0 1 1 [3,] 1 1 0 [4,] 1 0 1
太棒了!!!您刚刚创建了一个漂亮的矩阵。
荣誉让我们使用which()获取值" 0"在矩阵中的位置。
which(df==0,arr.ind = T)
row col [1,] 2 1 [2,] 1 2 [3,] 4 2 [4,] 3 3
好了,哪个函数返回了矩阵中值" 0"的位置。
第一次出现的" 0"在第二行的第一列中。
然后,下一个出现在第一行第二列。
然后,我们有第四行,第二列。
最后,第三行,第三列。