0

我正在尝试对我的数据(以矩阵的形式)应用一个过滤器,比如 10 列,200 行。

我只想保留方差系数大于阈值的那些行。但是使用我拥有的代码,它似乎打印了通过阈值的行的方差系数。我希望它只测试它是否通过阈值,但在矩阵中打印原始数据点。

covar <- function(x) ( sd(x)/mean(x) )
evar <- apply(myMatrix,1,covar)
myMatrix_filt_var <-myMatrix[evar>2,]

这里我设置的阈值是 2。

我究竟做错了什么 ?抱歉刚学R。

谢谢!

4

1 回答 1

1

如果m是你的矩阵,那么,

m[apply(m, 1, function(x) sd(x)/mean(x) > 2), ]

应该给你过滤后的矩阵。这个想法是获得每行的变异系数并检查它是否 > 2 inside。这将返回一个逻辑向量,通过直接访问它m[logical_vector, ],我们可以获得条件为 TRUE 的那些行。

na.rm = TRUE如果要在计算sd和时删除 NA 值,可以使用mean

于 2013-03-29T19:51:20.467 回答