Strings are converted to cells during readtable

조회 수: 9(최근 30일)
Bill Tubbs
Bill Tubbs 2022년 6월 10일
댓글: Bill Tubbs 2022년 6월 10일
I am incrementally saving data to a csv file which includes strings:
data = table("string1", "string2");
writetable(data, "data.csv");
Later on:
data_from_file = readtable('data.csv')
data_from_file =
1×2 table
Var1 Var2
___________ ___________
{'string1'} {'string2'}
Note that the data are now char arrays in cells.
This is causing lots of problems, for example when I try to join the old data with the new:
new_data = table("string1", "string2");
data = outerjoin(data_from_file, new_data, 'MergeKeys', true)
Error using tabular/outerjoin (line 152)
Left and right key variables 'Var1' and 'Var1' are not comparable because one is
a non-cell.
Is there a way to avoid this problem or convert the chars back to strings after readtable?
  댓글 수: 2
Bill Tubbs
Bill Tubbs 2022년 6월 10일
E.g.
new_data = table("string1", "string2");

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

채택된 답변

Stephen23
Stephen23 2022년 6월 10일
편집: Stephen23 2022년 6월 10일
The simple solution is to specify the TEXTTYPE option when importing:
data = table("string1", "string2");
writetable(data, "data.csv");
data_from_file = readtable('data.csv', 'TextType','string')
data_from_file = 1×2 table
Var1 Var2 _________ _________ "string1" "string2"

추가 답변(1개)

KSSV
KSSV 2022년 6월 10일
You can convert cell into a string and then use join.
data = table("string1", "string2");
writetable(data, "data.csv");
data_from_file = readtable('data.csv') ;
for i = 1:width(data_from_file)
data_from_file.(i) = string(data_from_file.(i)) ;
end
new_data = table("string3", "string4");
data = outerjoin(data_from_file, new_data, 'MergeKeys', true)

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by