2012-11-19 29 views
27

Giả sử tôi có một véc tơ remove<- c(17,18,19,20,24,25,30,31,44,45). Làm cách nào để có được mọi giá trị khác trong vectơ? Giống như vậy: 17,19,24,30,44R cách liệt kê mọi phần tử khác?

Tôi đang cố gắng sử dụng chức năng seq: seq(remove, 2) nhưng không hoạt động.

Bất kỳ trợ giúp nào được đánh giá cao.

+0

remove [seq (1, chiều dài (loại bỏ), bởi = 2)] – liuminzhao

+1

Cấu trúc cho 'seq' là 'seq (bắt đầu #, cuối #, khoảng thời gian)' . Vì vậy, nói 'seq (loại bỏ, 2)' đang nói R: "bắt đầu ở tất cả các con số trong loại bỏ, và đếm lên theo khoảng thời gian mặc định (đó là 1) cho đến khi bạn nhận được đến 2." –

Trả lời

70
remove[c(TRUE, FALSE)] 

sẽ làm các trick.


Cách thức hoạt động?

Nếu các vectơ logic được sử dụng để lập chỉ mục trong R, giá trị của chúng được tái chế nếu vector chỉ số ngắn hơn vectơ chứa các giá trị.

Ở đây, vectơ remove chứa mười giá trị. Nếu chỉ số vector c(TRUE, FALSE) được sử dụng, lệnh thực tế là: remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]

Do đó, tất cả các giá trị với số chỉ mục lẻ được chọn.

11
remove[seq(1,length(remove),2)] 
8

Chỉ cần một thay thế:

> remove[seq_along(remove) %% 2 > 0] 
[1] 17 19 24 30 44 
Các vấn đề liên quan