2010-09-29 42 views
25

Trong R, nếu bạn kiểm tra điều kiện trên vectơ thay vì vô hướng, nó sẽ trả về một vectơ chứa kết quả của phép so sánh cho mỗi giá trị trong vectơ. Ví dụ:Đếm số giá trị vector trong phạm vi với R

> v <- c(1,2,3,4,5) 
> v > 2 
[1] FALSE FALSE TRUE TRUE TRUE 

Bằng cách này, tôi có thể xác định số phần tử trong một vector ở trên hoặc dưới một số nhất định, như vậy.

> sum(v > 2) 
[1] 3 
> sum(v < 2) 
[1] 1 

Có ai biết cách tôi có thể xác định số lượng giá trị trong một phạm vi nhất định không? Ví dụ: làm cách nào để xác định số lượng giá trị lớn hơn 2 nhưng nhỏ hơn 5?

Trả lời

35

Hãy thử

> sum(v > 2 & v < 5) 
+0

Điều đó thật dễ dàng, tôi rất xấu hổ. Điều đầu tiên tôi đã thử là một cái gì đó như thế, ngoại trừ tôi đã sử dụng && làm toán tử và logic thay vì &. Tôi chỉ được sử dụng để sử dụng nó trong các ngôn ngữ khác. Sự khác biệt giữa '&' và '&&' trong R là gì? –

+3

&& được sử dụng cho các vectơ có chiều dài 1. & hoạt động trên mỗi phần tử trong một vectơ. – stevendesu

+2

R-intro, ch. 9.2.1 – aL3xa

0

Sử dụng đó:

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

Có còn là% <% và% < =% toán tử so sánh trong gói TeachingDemos mà cho phép bạn làm như thế này:

sum(2 %<% x %<% 5) 
sum(2 %<=% x %<=% 5) 

cho kết quả tương tự như:

sum(2 < x & x < 5) 
sum(2 <= x & x <= 5) 

Điều nào tốt hơn có thể là vấn đề sở thích cá nhân.

+0

Điều đó chắc chắn hữu ích. Tôi đã thử một cái gì đó như thế nhưng có lỗi cú pháp. Đó là cách tôi sẽ viết trên giấy hoặc LaTeX, vì vậy nó là tốt để biết. Bằng cách này, tôi giả sử bạn có nghĩa là x% <=% 5 và không x% <= 5%. –

+0

Cảm ơn bạn đã đánh bắt% cố gắng trôi nổi, tôi đã sửa nó ngay bây giờ. –

Các vấn đề liên quan