tableから新たな​tableを作った際​変数名が失われてしま​う件について

 前提として下のサイトを参考に質問しています。コードもサイトのをいじったものです。
 コードを実行するとtable型変数T2, T3は画像のようになります。
T3の変数名がVar2, Var3と、T2では維持されていた変数名が失われてしまっていますので解決策を教えていただきたいです。
 
T2 = readtable('patients.dat');
T2 = T2(1:5,:);
for i =1:1:3
T3(:,i) = T2(:,2 * i);
end

 Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 2 Aug. 2021
Bearbeitet: Atsushi Ueno am 2 Aug. 2021

2 Stimmen

「T2では維持されていた変数名がT3では失われてしまった」のではなく「T3の変数名(指定しなかったのでVar2, Var3)を(T2からの値コピーにより)変更できない」のです。何故T3の1列目の変数だけコピーできたかと言うと、T2をテーブルとしてT3に代入したからです。
テーブルの任意列を別の(既存)テーブルの任意列にコピーしても値だけがコピーされ、列名は変更されません。
T2 = readtable('patients.dat');
T4 = T2(1:5,:); T5 = T4;
T5(:,1) = T4(:,2) % 値はコピーされるが、'Gender','Gender','Age',...にはならない
T5 = 5×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus __________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________ {'Male' } {'Male' } 38 {'County General Hospital' } 71 176 1 124 93 {'Excellent'} {'Male' } {'Male' } 43 {'VA Hospital' } 69 163 0 109 77 {'Fair' } {'Female'} {'Female'} 38 {'St. Mary's Medical Center'} 64 131 0 125 83 {'Good' } {'Female'} {'Female'} 40 {'VA Hospital' } 67 133 0 117 75 {'Fair' } {'Female'} {'Female'} 49 {'County General Hospital' } 64 119 0 122 80 {'Good' }
テーブル同士を連結すると変数名も付いて来ます。「データのコピー」ではなく「テーブルの連結」によって新たなテーブルを作成すれば、やりたい事を実現する事が出来ます。
T2 = T2(1:5,:);
T3 = []; % 一旦T3を空行列(テーブル)として定義する
for i = 1:1:3
T3 = [T3 T2(:,2 * i)]; % T3にT2を1列ずつ連結する
end
T3
T3 = 5×3 table
Gender Location Weight __________ _____________________________ ______ {'Male' } {'County General Hospital' } 176 {'Male' } {'VA Hospital' } 163 {'Female'} {'St. Mary's Medical Center'} 131 {'Female'} {'VA Hospital' } 133 {'Female'} {'County General Hospital' } 119

2 Kommentare

Atsushi Ueno
Atsushi Ueno am 2 Aug. 2021
さも知っているように回答しましたが、今仕様を理解しました。
NO MIYA
NO MIYA am 15 Okt. 2021
返信遅くなってしまい申し訳ありません!
とても丁寧にありがとうございました!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2020b

Gefragt:

am 2 Aug. 2021

Bearbeitet:

am 26 Nov. 2021

Community Treasure Hunt

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

Start Hunting!