Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除具有一定数量的零的列-R_R - Fatal编程技术网

删除具有一定数量的零的列-R

删除具有一定数量的零的列-R,r,R,如何删除数据中超过6个零的列 请让我知道如何使我的示例代码实现我需要做的事情,如果您有一个较短的方法,请让我知道这一点。解释和教我为什么它会起作用也将不胜感激 删除零的示例代码: removeThese = c() for(i in 1:ncol(myData)) { rowsWithZeros = which(myData[,i] == 0) if(length(rowsWithZeros) > 6) { removeThese = c(removeThese, i) } } myDat

如何删除数据中超过6个零的列

请让我知道如何使我的示例代码实现我需要做的事情,如果您有一个较短的方法,请让我知道这一点。解释和教我为什么它会起作用也将不胜感激

删除零的示例代码:

removeThese = c()
for(i in 1:ncol(myData))
{
rowsWithZeros = which(myData[,i] == 0)
if(length(rowsWithZeros) > 6)
{
removeThese = c(removeThese, i)
}
}
myData= myData[,-removeThese]

如果要缩短行数,可以使用适当的*apply语句替换for循环

sixZeroes = function(col) {
  sum(col==0)>6
}

myData=myData[,apply(myData,2,sixZeroes)]
如果你想要一个单行程序,函数可以是内联的。

怎么样

i <- colSums(myData == 0, na.rm=TRUE) < 7
myData <- myData[, i, drop=FALSE]

i如果您有数据帧:

Filter(function(x) sum(x==0)<=6, df)

Filter(function(x)sum(x==0)2代表什么?myData=myData[,apply(myData,2,六个零)]这是apply函数中的边距参数。看看
?apply(apply)
哦,我明白了!谢谢!!它是矩阵还是数据框?如果你使用列表子集,你就不需要像
data[colSums(data==0,na.rm=TRUE)<7]
Filter(function(x) sum(x==0)<=6, df)