删除具有一定数量的零的列-R
如何删除数据中超过6个零的列 请让我知道如何使我的示例代码实现我需要做的事情,如果您有一个较短的方法,请让我知道这一点。解释和教我为什么它会起作用也将不胜感激 删除零的示例代码:删除具有一定数量的零的列-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
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)