我是 R 的新手,我有一个名为 pedM 的数据框,它有 203 行和 19 列,我想编写一行代码来删除然后在数据框中返回值主要为 0 的列(例如,98% 的列是0)。
我正在使用数据框输出一个基于基因表达返回图像的热图,并且我想摆脱那些对数据没有真正贡献的异常值的行。
我想我正在寻找的代码行相当简单,但我无法理解正确的方法。重申一下,寻找一条基本上可以从具有 98% 0 或 2% 非零的数据框中删除列的行,无论哪种方式更容易。
提前致谢。
维韦克
为了清楚起见,我喜欢分几步来做这件事。首先定义一个函数来检查向量的 98% 是否为零并返回 True 或 False:
myfun <- function(x, threshhold=0.98) {
if(length(x[x==0])/length(x) > threshhold) {
TRUE
} else {
FALSE
}
}
然后使用以下方法为每列创建一个布尔向量apply
:
to.drop <- apply(pedM, 2, myfun)
最后删除您不想要的列:
pedM <- pedM[, !to.drop]