【发布时间】:2020-05-25 17:50:39
【问题描述】:
我在尝试理解代码时遇到了一些问题。我有一个代码,它应该加载到矩阵中,并在下面的列中调用顶部的 n 功能。
TopFeatures <- function(matrix, ncols = 1, nfeatures = 20){
mtx <- matrix[ , ncols, drop = FALSE]
data <- mtx[order(mtx, decreasing = TRUE), , drop = FALSE]
features <- head(x = rownames(x = data), n = nfeatures
return(features)
}
但是,每当我尝试超过 1 列时,我都会收到如下错误。
> TopFeatures(so, ncols = 1:3, nfeatures = 10)
Error in mtx[order(mtx, decreasing = TRUE), , drop = FALSE] :
subscript out of bounds
我相信错误来自这一行:
data <- mtx[order(mtx, decreasing = TRUE), , drop = FALSE]
但是,我真的不明白这条线应该做什么。
我的理解是,这里的目的是对矩阵中的所有单元格进行排序,然后按降序排序,然后挑出最靠前的n 特征。函数order 对您的矩阵进行排序并返回一个索引向量,该向量等于矩阵中单元格的数量,但您不能使用索引向量进行子集化,因为该数字将超过行数。我想这就是为什么我有这个错误。但是,我不知道如何解决这个问题。
有人可以指导我如何解决这个问题吗?
非常感谢。
【问题讨论】: