2016-04-13 7 views

Antwort

1

Try this:

v1 <- 1:3 
sum(sapply(seq_along(v1), function(i) i * prod(2 * v1[-i]))) 

Wenn v1 wirklich nur 1:3 ist, könnten Sie einfach v1 statt seq_along(v1).

Die Idee hier ist, dass negative Indizes verwendet werden können, um Elemente aus einem Vektor ausschließen. So ist v1[-i]v1 mit dem ith-Element entfernt.

Beachten Sie, dass R mit ganzen Vektoren arithmetisch arbeiten kann. Daher können Sie anstelle von sapply(seq_along(v1), function(j) 2 * v1[j]) einfach 2 * v1 schreiben.

+0

awesome! Vielen Dank. – Max

1

Hier ist eine weitere Option

library(matrixStats) 
sum(seq_along(v1)*colProds(2*matrix(v1, nrow=4, ncol=3)[-c(1,4),])) 
#[1] 72