Table variable subscripts must be real positive integers
Afficher commentaires plus anciens
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 commentaires
Dave B
le 29 Juil 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
le 29 Juil 2021
Dave B
le 29 Juil 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
le 29 Juil 2021
Eduardo Orellana
le 29 Juil 2021
Modifié(e) : Eduardo Orellana
le 29 Juil 2021
Dave B
le 29 Juil 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
le 29 Juil 2021
Modifié(e) : Eduardo Orellana
le 29 Juil 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
le 30 Juil 2021
Réponses (1)
Eike Blechschmidt
le 29 Juil 2021
0 votes
I guess you just forgot the quotation marks around benchmarkName and assetNames.
1 commentaire
Eduardo Orellana
le 29 Juil 2021
Catégories
En savoir plus sur Tables dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!