R векторизация без ifelse - PullRequest
0 голосов
/ 26 мая 2020
a <- array(1:18, dim=c(3,3,2))
a1 <- which( a >= 17, arr.ind = T)
a1im <- cbind(a1[,1] - 1, a1[,c(2,3)])
#ADVDOMiM is a logical vector

Я бы хотел более качественную векторизацию, чем эта:

a[a1im] <- ifelse( a[a1] >= 5 & ADVDOMiM, a[a1], a[a1im])

Я бы хотел что-то вроде этого:

 a[a[a1] >= 5 & ADVDOMiM] <- a[a1]

но это не работает (мне нужно чтобы изменить результат в [a1im], но я не знаю, как это сделать)

1 Ответ

1 голос
/ 26 мая 2020

Вы можете попробовать подмножество a1im и a1 с помощью a[a1] >= 5 & ADVDOMiM, чтобы избежать ifelse:

i <- a[a1] >= 5 & ADVDOMiM
a[a1im[i,]] <- a[a1[i,]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...