2011-12-26 9 views
8

Korzystając z dwóch poniższych wektorów R, chcę wyodrębnić podzbiór valMe przy użyciu wartości logicznych w boolMe. Ponadto chciałbym mieć dwa możliwe wyjścia, jeden, w którym wartości FAŁSZ w boolMe są anulowane z valMe, a drugi, w którym wartości FAŁSZ są zastępowane przez NA. Kolejny przykład to, co chcę robić w kodzie:Podział wektora za pomocą innego wektora logicznego w R

wejścia

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

Przeznaczone wyjściowego

NA 2 3 4 NA 6 

lub

2 3 4 6 
+0

W pytonie, zrobiłbym coś takiego: '>>> a = [Fałsz, Prawda, Fałsz, Fałsz, Fałsz, Fałsz] >>> b = [10, 11, 12, 13, 14, 15] >>> [bb dla (aa, bb) w zip (a, b) if aa] [11] ' – hhh

+2

W' python3', 'import itertools; lista (itertools.compress (b, a)) ' – kev

Odpowiedz

11

bezpośrednio indeksu Można valMe za pomocą operatora [:

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

Patrz sekcja 2.7 of the intro manual więcej szczegółów.

7

Podobnie, jeśli chcesz NAS:

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

! neguje logiczną wartość logiczną więc wybrać żądane wartości brakujących. Następnie, w dotyku R awesomeness, przypisujesz NA do wybranych wartości.

Powiązane problemy