Table variable subscripts must be real positive integers
Mostrar comentarios más antiguos
Using the data from https://la.mathworks.com/help/finance/black-litterman-portfolio-optimization.html, and running the code head(T(:,["Dates" benchmarkName assetNames])), get the following error: Table variable subscripts must be real positive integers, logicals, character vectors, or cell arrays of character vectors. I dont now how to fix it.
thanks
9 comentarios
Dave B
el 29 de Jul. de 2021
This code (copied from the referenced page) works for me, can you double check what's in the benchmarkName and assetNames variables?
T = readtable('dowPortfolio.xlsx');
assetNames = ["AA", "AIG", "WMT", "MSFT", "BA", "GE", "IBM"];
benchmarkName = "DJI";
head(T(:,["Dates" benchmarkName assetNames]))
Eduardo Orellana
el 29 de Jul. de 2021
Dave B
el 29 de Jul. de 2021
What version of MATLAB? (i.e. >> version)
The error message doesn't indicate string as an option which makes me think it's before 2016b
In which case, try:
assetNames = {'AA' 'AIG' 'WMT' 'MSFT' 'BA' 'GE' 'IBM'};
benchmarkName = 'DJI';
head(T(:,['Dates' benchmarkName assetNames]))
Eduardo Orellana
el 29 de Jul. de 2021
Eduardo Orellana
el 29 de Jul. de 2021
Editada: Eduardo Orellana
el 29 de Jul. de 2021
Dave B
el 29 de Jul. de 2021
How about breaking down the problem a little:
head(T)
head(T(:,'Dates'))
head(T(:,"Dates"))
head(T(:,benchmarkName))
head(T(:,assetNames))
Which of these lines fails/works?
Eduardo Orellana
el 29 de Jul. de 2021
Editada: Eduardo Orellana
el 29 de Jul. de 2021
That helps, this sort of fits with my previous hypothesis i.e. that you need to provide char not string:
Let's work our way back to the final bit building off of:
head(T(:,'Dates'))
head(T(:,'DJI')) % just a different table variable
head(T(:,{'Dates' 'DJI'}) % Two table variables
% specifying 'DJI' in a workspace variable
benchmarkName = 'DJI';
head(T(:,{'Dates' benchmarkName}))
% specifying all of the assetNames
assetNames = {'AA' 'AIG' 'WMT' 'MSFT' 'BA' 'GE' 'IBM'};
head(T(:,assetNames))
% one way to put these all together
head(T(:,{'Dates' benchmarkName assetNames{:}}))
% the line of code from my previous comment
% (just in case something got confused and this works now)
head(T(:,['Dates' benchmarkName assetNames]))
Eduardo Orellana
el 30 de Jul. de 2021
Respuestas (1)
Eike Blechschmidt
el 29 de Jul. de 2021
0 votos
I guess you just forgot the quotation marks around benchmarkName and assetNames.
1 comentario
Eduardo Orellana
el 29 de Jul. de 2021
Categorías
Más información sobre Tables en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!