2009-07-23 43 views

Trả lời

28

Đây là một cách để thực hiện. Đầu tiên tôi nhận được các chỉ số mà tại đó x là một trong hai 8 hoặc 9. Sau đó, chúng ta có thể xác minh rằng ở những chỉ số, x thực sự là 8 và 9.

> inds <- which(x %in% c(8,9)) 
> inds 
[1] 1 3 4 12 15 19 
> x[inds] 
[1] 8 9 9 8 9 8 
+0

Nhưng giả sử tôi đang tìm kiếm các chỉ số cụ thể của hai giá trị mà không cần lệnh của họ được sắp xếp. Làm thế nào tôi sẽ nhận được kết quả của "26, 1" thay vì "1, 26" nếu tôi đang tìm kiếm các chỉ mục của Z và A trong bảng chữ cái? _which (chữ% trong% c ('z', 'a')) _ – dasf

0

Ngoài ra, nếu bạn không cần phải sử dụng các chỉ số nhưng chỉ các yếu tố bạn có thể làm

> x <- sample(1:10,20,replace=TRUE) 
> x 
[1] 6 4 7 2 9 3 3 5 4 7 2 1 4 9 1 6 10 4 3 10 
> x[8<=x & x<=9] 
[1] 9 9 
6

bạn có thể thử các nhà điều hành | cho điều kiện ngắn

which(x == 8 | x == 9) 
1

grepl có thể là một chức năng hữu ích. Lưu ý rằng grepl xuất hiện trong các phiên bản R 2.9.0 trở lên. Những gì tiện dụng về grepl là nó trả về một vector hợp lý có cùng độ dài như x.

grepl(8, x) 
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
[13] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE 

grepl(9, x) 
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE 
[13] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE 

Để đi đến câu trả lời của bạn, bạn có thể làm như sau

grepl(8,x) | grepl(9,x) 
+0

Tôi thích grepl, tốt cho lọc dataframes trên chuỗi văn bản, v.v. Cảm ơn ví dụ OR - Tôi nghĩ nó sẽ đơn giản , nhưng tôi tiếp tục cố gắng '|| 'là cú pháp sai. – atomicules

+2

Đây là một giải pháp rất nguy hiểm. 'grepl (9, c (9, 99, 654649))' sẽ trả về 'TRUE' cho tất cả những cái này. Người ta phải rất cẩn thận với các trận đấu chính xác và regex. –

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