Splitting a String in a table once
조회 수: 14 (최근 30일)
이전 댓글 표시
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
채택된 답변
Walter Roberson
2022년 10월 4일
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
Walter Roberson
2022년 10월 6일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Tables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!