计算向量中负数元素数量的优雅方法?

我有一个1024个值的数据向量,需要计算负数条目的数量。有没有一种优雅的方法来做这个而不循环并检查一个元素是否< 0并递增一个计数器?     
已邀请:
你想读'R简介'。你的答案很简单
 sum(  x < 0  )
这可以归功于矢量化。
x < 0
表达式返回一个布尔值向量,
sum()
可以操作(通过将布尔值转换为标准的0/1值)。     
Steve Lianoglou对这个问题有一个很好的答案如何在我的数据框中识别任何列中的负值? 让我只用一个小的补充(第4点)复制他的代码。 想象一下,你有一个像这样的data.frame:
df <- data.frame(a = 1:10, b = c(1:3,-4, 5:10), c = c(-1, 2:10))
这将返回一个布尔向量,其中的行具有负值:
has.neg <- apply(df, 1, function(row) any(row < 0))
以下是负数的索引:
which(has.neg)
这是带负数的元素数:
length(which(has.neg))
    
上述解决方案需要进行调整,以便将其应用于df。 以下命令有助于计算负数或任何其他符号逻辑关系。 假设你有一个数据帧:df&lt; - data.frame(x = c(2,5,-10,NA,7),y = c(81,-1001,-1,NA,-991)) 为了得到x中的负记录数:'nrow(df [df $ x&lt; 0,])'     

要回复问题请先登录注册