2013-09-29 3 views
0

Я пытаюсь определить скалярную функцию a и b, где a и b являются векторами, так что я могу сделать поверхность участок z=f(X,y) используя persp(a,b,z).Функция, которая принимает два вектора и возвращает матрицу г = (х, у) в R

Проблема в том, что возвращаемое значение моей функции является вектором той же длины, что и мой вектор a, когда я ожидал матрицу.

функция в вопросе:

logver <- function(a, b, PARAM) { 
    l <- (1/(1 + exp(-a - b * PARAM))) 
    return(l) 
} 

Любой знает, что я здесь отсутствует?

ответ

0

Попробовать это

logover <- function(a, b, PARAM){ 
    L <- (1/(1 + exp(-a-b*PARAM))) 
    return(L) 
} 

Тип return(L) в новой строке с отступом. Вы не получите никакой ошибки.

Каковы значения, которые вы пытаетесь передать для a, b и PARAM ??

+0

часть возврата (l) находится в другой строке с отступом, по какой-то причине она продолжает игнорироваться, когда я копирую и вставляю ее здесь. PARAM является регулярным числом, скажем 2. a и b сгенерированы с использованием seq (-10,10, by = 0.01) –

+0

Проблема заключается в том, что я ожидал получить значение для каждого значения a и b; матрица, в то время как я получаю вектор (длины 2001). –

+0

Когда вы используете seq (-10,10, by = 0.01), он возвращает оба значения, таким образом, возвращает значения 2001 года. Вам нужно решить, какое значение вы можете пропустить либо с левой, либо с боковой стороны. Вы можете изменить его на seq (-9.99,10, by = 0.01) ИЛИ seq (-10,9.99, на = 0.01). Это даст только 2000 значений. – Kumar

1

Если вы хотите все возможные комбинации a и b, используйте outer.

logver <- function(a, b, PARAM) 
{ 
    o <- outer(a, b*PARAM, `+`) 
    1/(1 + exp(-o)) 
} 
Смежные вопросы