2011-12-26 34 views
8

Sử dụng hai vectơ R sau, tôi muốn trích xuất một tập con của valMe sử dụng giá trị boolean trong boolMe. Ngoài ra, tôi muốn có hai đầu ra có thể, một trong những giá trị FALSE trong boolMe được ommited từ valMe và một trong đó các giá trị FALSE được thay thế bằng NA. minh họa thêm về những gì tôi muốn làm trong mã:Đặt véc tơ bằng cách sử dụng vectơ boolean khác trong R

Input

boolMe<-c(FALSE, TRUE, TRUE, TRUE, FALSE, TRUE) 
valMe<-1:6 

đầu ra Intended

NA 2 3 4 NA 6 

hoặc

2 3 4 6 
+0

Trong trăn, tôi sẽ làm điều gì đó như sau: '>>> a = [Sai, Đúng, Sai, Sai, Sai, Sai] >>> b = [10, 11, 12, 13, 14, 15] >>> [bb cho (aa, bb) trong zip (a, b) nếu aa] [11] ' – hhh

+2

Trong' python3', 'import itertools; list (itertools.compress (b, a)) ' – kev

Trả lời

11

Bạn có thể trực tiếp chỉ số valMe bằng cách sử dụng toán tử [:

> valMe[boolMe] 
[1] 2 3 4 6 

Xem phần 2.7 of the intro manual để biết thêm chi tiết.

7

Tương tự như vậy, nếu bạn muốn NAS:

> valMe[!boolMe] <- NA 
> valMe 
[1] NA 2 3 4 NA 6 

Các ! phủ nhận boolean logic, do đó bạn chọn các giá trị bạn muốn mất tích. Sau đó, trong một liên lạc của R awesomeness, bạn gán NA cho các giá trị được chọn.

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