2015-07-16 2 views
0

У меня есть простой целочисленный векторR: Совмещенные операции по вектору

a<- c(5, 11, 20) 

Я хочу применить несколько операций на нем, например,

a1<- a+1 
a2<- a+2 
a3<- a-3 

... , а затем объединить новый векторов элемент мудрый. В этом примере было бы:

new_a<-c(rbind(a1,a2,a3)) 

Поскольку мой первоначальный вектор довольно большой (~ 10000), а также операции, которые я хочу применить довольно много (~ 20), мне интересно, если есть более компактный способ сделать то же самое?

+1

Что-то вроде 'as.vector (T (наружный (а, с (1,2, -3), "+")))'? –

+0

Спасибо, Паскаль, это прекрасно соответствует моим потребностям! – User800701

ответ

4

Вы можете использовать функцию outer:

a <- c(5, 11, 20) 
op <- c(1, 2, -3) 

new_a 
# [1] 6 7 2 12 13 8 21 22 17 

as.vector(t(outer(a, op, "+"))) 
# [1] 6 7 2 12 13 8 21 22 17 
Смежные вопросы