R 删除具有特定属性的列%0

R 删除具有特定属性的列%0,r,dataframe,heatmap,R,Dataframe,Heatmap,我是R的新手,我有一个名为pedM的数据框,有203行19列,我想编写一行代码来删除数据框中大部分返回值为0的列(比如,98%的列为0) 我使用dataframe来输出一个热图,它返回一个基于基因表达式的图像,我想去掉那些含有离群值的行,这些离群值对数据没有任何影响 我想我正在寻找的代码行是相当简单的,但我不能用正确的方法来完成它。重申一下,寻找一行基本上可以从具有98%0或2%非零的数据帧中删除列,无论哪种方式更简单 提前谢谢 Vivek为了清晰起见,我想分几个步骤来做这件事。首先定义一个函数

我是R的新手,我有一个名为pedM的数据框,有203行19列,我想编写一行代码来删除数据框中大部分返回值为0的列(比如,98%的列为0)

我使用dataframe来输出一个热图,它返回一个基于基因表达式的图像,我想去掉那些含有离群值的行,这些离群值对数据没有任何影响

我想我正在寻找的代码行是相当简单的,但我不能用正确的方法来完成它。重申一下,寻找一行基本上可以从具有98%0或2%非零的数据帧中删除列,无论哪种方式更简单

提前谢谢


Vivek

为了清晰起见,我想分几个步骤来做这件事。首先定义一个函数,用于检查向量的98%零并返回True或False:

myfun <- function(x, threshhold=0.98) {
  if(length(x[x==0])/length(x) > threshhold) {
    TRUE
  } else {
    FALSE
  }
}
最后删除不需要的列:

pedM <- pedM[, !to.drop]

pedM为了清晰起见,我想分几个步骤来做这件事。首先定义一个函数,用于检查向量的98%零并返回True或False:

myfun <- function(x, threshhold=0.98) {
  if(length(x[x==0])/length(x) > threshhold) {
    TRUE
  } else {
    FALSE
  }
}
最后删除不需要的列:

pedM <- pedM[, !to.drop]

pedM+1非常好。如果
不需要
,则可以缩短函数。不等式本身会产生一个逻辑值。@Andrie说得很对,但为了清楚起见,我想我还是把它留在这里。好了,现在来参加“使它看起来像高斯证明”竞赛:谁能用最少的字符来写这个运算?:-)好的,走吧
pedM[,!apply(pedM,2,函数(x)长度(x[x==0])/length(x)>.98)]
我希望匿名函数定义有一个字符。。。62个字符…nchar(
pedM[,colSums(pedM==0)/nrow(pedM)+1非常好。你可以通过意识到你不需要
if
来缩短函数。不等式本身将产生一个逻辑值。@Andrie非常正确,但为了清楚起见,我想把它放在那里。好的,现在来看“让它看起来像高斯证明”竞赛:谁能用最少的字符编写这个操作?:-)好的,开始!
pedM[,!apply(pedM,2,函数(x)length(x[x==0])/length(x)>.98)]
我希望匿名函数defs…62个字符…nchar(
pedM[,colSums(pedM==0)/nrow(pedM)