Splitting a String in a table once
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Marcel-Maximilian
le 4 Oct 2022
Commenté : Marcel-Maximilian
le 8 Oct 2022
The table provided in the picture is an example of the one i am working with (main table has over 4600 rows). I want/ need to split the first colum at the first white space. So that the output would be "ACTB" and "diff1 day 30" for example.
My internet research has brought me to the function
regexp()
with the parameters: (data,' ','split','once')
data = nameofthetable.columname
So far this hasn't worked for me, since i get the following error:
Error using regexp
The 'STRING' input must be either a char row vector, a cell array of char row vectors, or a
string array.
My question is can i even use this function with a table enviroment and if so how can i make it work and insert a new row? Or is the data type of the first colum wrong and not even a string?
I hope u can help me with this problem.
Thanks in advance.

0 commentaires
Réponse acceptée
Walter Roberson
le 4 Oct 2022
I can tell from the way that the table displays that the entries are categorical() not character or string(). You would need to string() the variable before you can regex
3 commentaires
Walter Roberson
le 6 Oct 2022
S = ["ACTB (rep 1)"; "ACTB ipsc"];
CS = categorical(S);
T = table(S, CS)
Notice that inside tables, string() objects have the "" decoration around the entries, but categorical() objects have no decoration.
back = string(T.CS)
splits = regexp(back, '\s+', 'split', 'once')
You do not string() the table, you string() a variable in the table, and the result is a string array. You can insert the results into the table:
variety = categorical(cellfun(@(S) S(:,1), splits));
details = cellfun(@(S) S(:,2), splits);
T.variety = variety;
T.details = details;
T
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Tables dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!