MATLAB Answers

Error using @regress fuction

조회 수: 2(최근 30일)
Hello, I am trying to create a function as follows with a set of variables that I get from a table named Change1:
X = [Change1.Ones Change1.ReturnsMarket]
func = @regress(Change1.ReturnsCleaned,X);
However, everytime I get the following error message:
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for
mismatched delimiters.
Thank you all for your help !

  댓글 수: 0

로그인 to comment.

채택된 답변

Star Strider
Star Strider 24 Feb 2020
Try this:
func = @(Q)regress(Q,X);
then call it as:
[b,bint] = func(Change1.ReturnsCleaned);
(It seems a bit inefficient to me to wrap regress in an anonymous function. Personal opinion only.)

  댓글 수: 0

로그인 to comment.

추가 답변(2개)

Walter Roberson
Walter Roberson 24 Feb 2020
The @ operator can be used in four related syntaxes:
@NAME : create handle to function indicated by the name
@NAME1.NAME2 : create handle to function whose name inside its Package is as given
@() EXPRESSION : create handle to anonymous function with no parameters that evaluates to the given expression when invoked
@(NAME LIST) EXPRESSION : create handle to anonymous function with dummy parameters named inside the ()
You however have @EXPRESSION which is not valid syntax.
@ always has to do with creating handles, except possibly for some class definition purposes. If you want to invoke regress function instead of creating a handle then leave out the @

  댓글 수: 0

로그인 to comment.


Nabil Benhadda
Nabil Benhadda 24 Feb 2020
It is because I am trying to use it as part of the splitapply function, can I do so without the @?

  댓글 수: 6

표시 이전 댓글 수: 3
Nabil Benhadda
Nabil Benhadda 24 Feb 2020
Thank you a lot !
Star Strider
Star Strider 24 Feb 2020
As always, my pleasure!
Walter Roberson
Walter Roberson 25 Feb 2020
Q = Change1.ReturnsCleaned;
You are using that as your grouping variable, but it is not obvious to us that it contains only positive integers.
Change1.Groups = findgroups(Change1.Numero);
X = [Change1.Groups Change1.Ones Change1.ReturnsMarket];
findgroups does return the kind of positive integers needed for a grouping variable, but you are folding that information in as part of X and using X as the variable to be split rather than as the grouping variable. That seems odd.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by