删除具有特定%0的列

时间:2012-07-25 17:42:43

标签: r dataframe heatmap

我是R的新手,我有一个名为pedM的数据帧,包含203行和19列,我想编写一行代码来删除那些在数据框中返回值大多为0的列(例如98%)该列是0)。

我正在使用数据帧输出一个热图,该热图返回基于基因表达的图像,我想摆脱那些对数据没有真正贡献的异常值的行。

我想我正在寻找的代码行相当简单,但我不能用正确的方法来解决这个问题。重申一下,寻找一条基本上会从具有98%0或2%非零的数据框中删除列的方法,无论哪种方式都更容易。

提前致谢。

的Vivek

1 个答案:

答案 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]