2013-10-24 3 views
1

Я пришел из мира Python. Я хочу получить положительное число и установить неположительное число равным нулю. В Python:R список осмысление, если еще

>> a = [1,2,3,-1,-2, 0,1,-9] 
>> [elem if elem>0 else 0 for elem in a] 
[1, 2, 3, 4, 0, 0, 0, 1, 0] 

Скажем, у меня есть вектор в R, как я могу получить тот же результат.

a <- c(1,2,3,-1,-2, 0,1,-9) 
+0

на основе вашего предыдущего вопроса, вы можете захотеть 'а == 0 'вместо' а> 0 ' –

+1

Я думаю, что эта тема более проста для людей, чтобы понять, кто задает подобный вопрос. –

ответ

4

Использование ifelse

> ifelse(a>0, a, 0) 
[1] 1 2 3 0 0 0 1 0 

см ?ifelse для деталей.

вы также можете использовать [ для выбора этих значений, удовлетворяющих условию (a<=0) и заменить их на 0

> a[a<=0] <- 0 
> a 
[1] 1 2 3 0 0 0 1 0 

?"[" см.

a<=0 предоставит вам логический вектор, и вы можете использовать его в качестве индекса для определения тех значений, которые меньше или равны 0, а затем выполняют требуемую замену.

Хотя использование либо [ или ifelse являются наиболее распространенными, здесь я даю некоторые другие альтернативы:

a[which(a<=0)] <- 0  
#---------------------- 
a[a %in% 0:min(a)] <- 0 # equivalent to a[!a %in% 0:max(a)] <- 0 
#---------------------- 
match(a, 1:max(a), nomatch=0) 
#---------------------- 
pmax(a, 0) 
Смежные вопросы