看起来像一个非常简单的问题,但我如何转置Matlab表格向量?
为了将列向量aTable
简单地转换为行向量,我尝试了标准语法:
aTableT = aTable.';
aTableT = reshape(aTable, 1, height(aTable));
和
aTableT = rot90(aTable);
根据Mathworks,最后一个应该适用于表数组,请参阅here。但是,我收到此错误代码:
使用表/置换时出错(第396行) 未定义的功能' permute'输入参数类型'表'。
rot90错误(第29行) B =置换(B,[2 1 3:ndims(A)]);
注意:fliplr
也不是很有用。我很确定我已经涵盖了明显的角度 - 任何想法?
谢谢!
答案 0 :(得分:2)
尝试将表格转换为数组,转置该数组,然后转换回表格。换句话说,尝试这样做:
aTableArray = table2array(aTable);
aTableT = array2table(aTableArray.');
我也阅读了rot90
的文档,它说rot90
肯定适用于表,我得到的错误与你相同。因此,由于转置显然适用于数组/矩阵,所以让我们通过转换为矩阵,转置矩阵然后转换回表格来快速解决问题。这对我有用!
答案 1 :(得分:1)
我使用其他一些方法扩展了table()
类,并修复了https://github.com/okomarov/tableutils中的一些现有问题。
具体到这个问题,我定义了类似矩阵表的转置,即如果表每个单元格有一个值,并且所有变量(列)属于同一个类,那么你可以用我的包转置表格。
一个例子:
t = array2table(magic(4))
t =
Var1 Var2 Var3 Var4
____ ____ ____ ____
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> t'
ans =
Row1 Row2 Row3 Row4
____ ____ ____ ____
Var1 16 5 9 4
Var2 2 11 7 14
Var3 3 10 6 15
Var4 13 8 12 1