getting data types of table

조회 수: 113 (최근 30일)
Callum Clarke
Callum Clarke 2016년 9월 27일
편집: Leon 2024년 2월 19일
I want to compare data types of each column of a table against a cell array of column header-data type pairs, with the end goal of replacing columns with non-matching data types with the correct ones.
What I have managed so far is a loop that creates another cell array of header-data type pairs. What I need now is a way to compare this array to the 'checklist' array, returning which columns have non-matching data types. There is no guarantee of the table having the same columns or being on the same order as the array it is checked against. I tried ismember() but it just returns a 2xn array of 1s, even for tables that shouldn't match. I think I need to define key/value pairs somehow.
Any suggestions on how to do this, or other methods entirely, are more than welcome!
  댓글 수: 1
dpb
dpb 2024년 1월 1일
Agree, this should be a metadata property of the table and thus directly accessible.

댓글을 달려면 로그인하십시오.

채택된 답변

Peter Perkins
Peter Perkins 2016년 10월 3일
편집: Cris LaPierre 2022년 11월 18일
It seems like you want a list of the table's variable names, a list of the variable's types, and your 2xn cell array of names/types. Use t.Properties.VariableNames and varfun(@class,t,'OutputFormat','cell') to get the first two things.
Then it seems like you'd want to use ismember )both outputs) on the variable names to figure out which are matched in your other list, and where, and then for the ones that do match, compare their types using strcmp.
Hope this helps.
  댓글 수: 2
dpb
dpb 2024년 1월 1일
@Peter Perkins -- I never could figure out why this isn't a member of the table properties stuct, just like .VariableNames; seems like it would be obvious to want/need on occasion; particularly if it is needed to be able to clone a table if one wishes to augment an existing one with some more data.
It goes along with my previous wishes for a function that would append an empty record to an existing table...
Leon
Leon 2024년 2월 19일
편집: Leon 2024년 2월 19일
I third that. I'd like this feature too. And I also recently asked about how to add an empty record too! This may be of interest for that:
Did you find a better way?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Geoff Hayes
Geoff Hayes 2016년 9월 27일
Callum - class allows you to determine the class or data type of an object. For example,
>> x = 42;
>> class(x)
ans =
double
This function may be useful in determining the data type of each object in your table.
  댓글 수: 1
Giuseppe Degan Di Dieco
Giuseppe Degan Di Dieco 2021년 11월 30일
Thank you Geoff!
The suggested command works also with table variables.
Best!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Type Identification에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by