假设我们有一个像这样的矩阵:
> A = matrix(
+ c(2, 4, 3, 1, 5, 7), # the data elements
+ nrow=2, # number of rows
+ ncol=3, # number of columns
+ byrow = TRUE) # fill matrix by rows
> A # print the matrix
[,1] [,2] [,3]
[1,] 2 4 3
[2,] 1 5 7
现在,我只是使用了这个小例子,但想象一下矩阵是否更大,如200行和5列等。我想要做的是从第3列获取最小值,并提取该行。换句话说,查找并获取第3个属性在该数据框的整个列中最低的行。
dataToReturn <- which(A== min(A[, 3])
但这不起作用。
答案 0 :(得分:2)
另一种方法是使用which.min
A[which.min(A[, 3]), ]
##[1] 2 4 3
答案 1 :(得分:1)
您可以通过[]
和min
进行简单的子集化来完成此操作:
A[A[,3] == min(A[,3]),]
[1] 2 4 3
这是:返回A
的那些行,其中第3列的值等于A
第3列的最小值。
如果您有这样的矩阵:
A <- matrix(c(2,4,3,1,5,7,1,3,3), nrow=3, byrow = T)
> A
[,1] [,2] [,3]
[1,] 2 4 3
[2,] 1 5 7
[3,] 1 3 3
> A[which.min(A[, 3]), ] #returns only the first row with minimum condition
[1] 2 4 3
> A[A[,3] == min(A[,3]),] #returns all rows with minimum condition
[,1] [,2] [,3]
[1,] 2 4 3
[2,] 1 3 3