2015-06-17 4 views
0

Я хочу вычислить простую сумму, но не от 1 до значения, которое я вложил в функцию sum, вместо этого хочу, чтобы она суммировалась, как я обычно делал бы в математике, где у меня есть выражение, которое имеет некоторую переменную, которая затем меняет значение с 1: 4, а затем R представляет собой сумму значений выражения.Функция суммы в R

Как

y = function(x) x**2 

sum(y(x),x=3:5) = 3^2+4^2+5^2 

Как это сделать в R?

+0

Try суммы ((3: 5)^2) – user1945827

ответ

5

Вы чуть было это, просто передать 3:5 непосредственно y:

> y <- function(x) x**2 
> sum(y(3:5)) 
[1] 50 
+1

Спасибо! Это было именно то, что я искал! – 1233023

1

Присвоить значения для х заранее, и чем суммировать результат вашей функции. Так как это:

y = function(x) x^2 x = 3:5 sum(y(x))

4

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

mysum <- function(f,vals) sum(f(vals)) 
mysum(y,3:5) 
# [1] 50 

Хотя это не является стандартом в R, есть использует для прохождения функции и аргументы отдельно:

sapply(list(sqrt=sqrt,log=log,sin=sin),mysum,vals=1:3) 
#  sqrt  log  sin 
# 4.146264 1.791759 1.891888 
1

Если ваша функция не принимает вектор, вам необходимо использовать функцию apply. В базовой R:

y <- function(x) x^2 
sum(sapply(1:4, y)) 

или

sum(Vectorise(y)(1:4)) 
Смежные вопросы