different view in uitable app designer
Show older comments
to sx the variable in workspace... (T= struct2table(Sis);)
to dx the variable in appdesigner as table ( app.UITable_mincap_2.Data=Table_DataAllSystem_Struct(app.Sis);)
in both =1 but only one line is written differently
12 Comments
Taylor
on 3 Nov 2023
Try using the class or eps functions to identify if the data point has the same precision.
Walter Roberson
on 3 Nov 2023
I suspect that the value there is just slightly different than 1. You can pull the value out of the uitable and subtract 1 and see the difference
piero
on 4 Nov 2023
Walter Roberson
on 4 Nov 2023
I notice that your gg-1 results in a row vector. If you had extracted the data from the stored uitable then I would have expected a column vector.
For testing,
temp = app.UITable_mincap_2.Data;
mask = temp.NameOfVariableWithCurrencyInIt == 'USD';
subset = temp(mask,:);
usdvalue = subset.NameOfVariableWithNumericvalueInIt;
format long g
usdvalue - 1
piero
on 4 Nov 2023
Walter Roberson
on 4 Nov 2023
The information you have given us is that you have a table. You have not shown us the names of the variables in the table, and we have to assume that there might be more columns in the table than you showed us, so we do not know the column numbers involved.
So I put in names that are instructions about how you should change the code.
mask = temp.NameOfVariableWithCurrencyInIt == 'USD';
replace "NameOfVariableWithCurrencyInIt" with the name of the variable which holds the currency name information
usdvalue = subset.NameOfVariableWithNumericvalueInIt;
replace "NameOfVariableWithNumericvalueInIt" with the name of the variable that holds the number that you are showing us
For example maybe the code should look like
temp = app.UITable_mincap_2.Data;
mask = temp.Currency == 'USD';
subset = temp(mask,:);
usdvalue = subset.ExchangeRate;
format long g
usdvalue - 1
if the names of the two variables involved are Currency and ExchangeRate.
If the table happens to hold only the two columns you showed us then you can use
temp = app.UITable_mincap_2.Data;
mask = temp.(1) == 'USD';
subset = temp(mask,:);
usdvalue = subset.(2);
format long g
usdvalue - 1
piero
on 4 Nov 2023
Walter Roberson
on 5 Nov 2023
You mistyped. I used the variable named subset but the error message shows you accidently used the name subnet
Walter Roberson
on 5 Nov 2023
if the data is not confidential then please store
Table_DataAllSystem_Struct(app.Sis)
into a variable, and save to a mat file and attach the mat file
piero
on 5 Nov 2023
Answers (1)
Walter Roberson
on 5 Nov 2023
0 votes
Experimentally:
It appears that the formatting of rows in the table works on some kind of buffer system having to do with which values are currently visible (the row is scrolled into range, even if the column itself is not.)
The rule appear to be that if anywhere in the current "buffer"-full the row contains a non-integer value, that the entire buffer-full for that column may be formatted as floating point. But only if the values have absolute value less than 1000: from 1000 upwards, the individual non-integer item will be formatted in scientific notation but the integer items in the buffer-full will be formatted as integers.
This is definitely not a behaviour I would have expected.
4 Comments
piero
on 5 Nov 2023
piero
on 5 Nov 2023
Walter Roberson
on 5 Nov 2023
You could consider using convertvars . However probably varfun with compose would be a better bet: if you just string() a column then it uses odd internal rules for the conversion, whereas if you invoke compose with an anonymous function you could specify the conversion format.
piero
on 6 Nov 2023
Categories
Find more on Develop Apps Using App Designer in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!