用R计算范围内的向量值的数目

用R计算范围内的向量值的数目,r,vector,comparison,R,Vector,Comparison,在R中,如果在向量而不是标量上测试条件,它将返回一个向量,其中包含向量中每个值的比较结果。例如 > v <- c(1,2,3,4,5) > v > 2 [1] FALSE FALSE TRUE TRUE TRUE >v>2 [1] 假假真真 通过这种方式,我可以确定向量中高于或低于某个数的元素数,如下所示 > sum(v > 2) [1] 3 > sum(v < 2) [1] 1 >总和(v>2) [1] 3 >总和(v总和(v>2&v

在R中,如果在向量而不是标量上测试条件,它将返回一个向量,其中包含向量中每个值的比较结果。例如

> v <- c(1,2,3,4,5)
> v > 2
[1] FALSE FALSE  TRUE  TRUE  TRUE
>v>2
[1] 假假真真
通过这种方式,我可以确定向量中高于或低于某个数的元素数,如下所示

> sum(v > 2)
[1] 3
> sum(v < 2)
[1] 1
>总和(v>2)
[1] 3
>总和(v<2)
[1] 1
有人知道如何确定给定范围内的值的数量吗?例如,如何确定大于2但小于5的值的数量?

试试看

> sum(v > 2 & v < 5)
>总和(v>2&v<5)
使用以下选项:

 set.seed(1)
 x <- sample(10, 50, replace = TRUE)
 length(which(x > 3 & x < 5))
 # [1]  6
set.seed(1)
x3&x<5)
# [1]  6

还有一个%太简单了,我很尴尬。我尝试的第一件事是类似的,除了我使用&&作为逻辑and运算符而不是&。我只是习惯于在其他语言中使用它。R中的“&”和“&&”有什么区别?&&用于长度为1的向量对向量中的每个元素进行操作。有没有简单的方法可以用这样的代码忽略NA值?@Slam,只需使用
sum(v>2&v<5,NA.rm=T)
来删除NAs。这肯定很有帮助。我尝试了类似的方法,但出现了语法错误。我会这样写在纸上或乳胶上,所以很高兴知道。顺便说一句,我想你的意思是x%,谢谢你抓住了那个试图漂走的%,我现在把它修好了。
sum( 2 %<% x %<% 5 )
sum( 2 %<=% x %<=% 5 )
sum( 2 < x & x < 5 )
sum( 2 <= x & x <= 5 )