我有一个包含1024个值的数据向量,需要计算负数条目的数量。是否有一种优雅的方法可以在不循环和检查元素是否为< 0并递增计数器的情况下执行此操作?
答案 0 :(得分:32)
您想阅读'R简介'。你的回答只是
sum( x < 0 )
由于矢量化而起作用。 x < 0
表达式返回一个布尔值向量,sum()
可以操作(通过将布尔值转换为标准的0/1值)。
答案 1 :(得分:1)
Steve Lianoglou How to identify the rows in my dataframe with a negative value in any column?
对这个问题有一个很好的答案让我用一个小的补充(第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))
答案 2 :(得分:0)
需要对上述规定的解决方案进行调整,以将其应用于df。 以下命令有助于获取负数或任何其他符号逻辑关系的计数。 假设您有一个数据框:df <-data.frame(x = c(2,5,-10,NA,7),y = c(81,-1001,-1,NA,-991)) 为了获取x中的否定记录数:'nrow(df [df $ x <0,])'