我是R的新手,我有一个名为pedM的数据帧,包含203行和19列,我想编写一行代码来删除那些在数据框中返回值大多为0的列(例如98%)该列是0)。
我正在使用数据帧输出一个热图,该热图返回基于基因表达的图像,我想摆脱那些对数据没有真正贡献的异常值的行。
我想我正在寻找的代码行相当简单,但我不能用正确的方法来解决这个问题。重申一下,寻找一条基本上会从具有98%0或2%非零的数据框中删除列的方法,无论哪种方式都更容易。
提前致谢。
的Vivek
答案 0 :(得分:3)
为了清楚起见,我喜欢在几个步骤中执行此操作。首先定义一个函数,该函数检查向量的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]