tableから新たなtableを作った際変数名が失われてしまう件について
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
NO MIYA
am 2 Aug. 2021
Bearbeitet: NO MIYA
am 26 Nov. 2021
前提として下のサイトを参考に質問しています。コードもサイトのをいじったものです。
コードを実行すると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
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 2 Aug. 2021
Bearbeitet: Atsushi Ueno
am 2 Aug. 2021
「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',...にはならない
テーブル同士を連結すると変数名も付いて来ます。「データのコピー」ではなく「テーブルの連結」によって新たなテーブルを作成すれば、やりたい事を実現する事が出来ます。
T2 = T2(1:5,:);
T3 = []; % 一旦T3を空行列(テーブル)として定義する
for i = 1:1:3
T3 = [T3 T2(:,2 * i)]; % T3にT2を1列ずつ連結する
end
T3
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!