我有一个46x46数据集,我需要在一行中更新多个值。
例如:
data =
A B C D
0 0 0 0
0 0 0 0
0 0 0 0
我想把它做成
A B C D
0 0 0 0
0 1 0 1
0 0 0 0
我可以写这样的东西吗:
data(2, ['B', 'D']) = [1, 1];
谢谢!
是:
data(2, [2 4]) = mat2dataset([1 1]);
或者简单地说:
data(2, [2 4]) = mat2dataset(1);
注意:附带说明一下,您应该避免使用数据集。根据文档:"数据集数据类型将来可能会被删除释放要处理异构数据,请使用Matlab表数据键入。"
如果有table
(建议替换dataset
类型),则可以使用'VariableNames'
属性引用列的名称:
首先构建表:定义列名并用零填充所有列:
data = table(zeros(3,1), zeros(3,1), zeros(3,1), zeros(3,1), ....
'VariableNames', {'A','B','C','D'});
这提供
data =
A B C D
_ _ _ _
0 0 0 0
0 0 0 0
0 0 0 0
然后,要更改问题条目中的条目,您可以使用
data(2, ismember(data.Properties.VariableNames, {'B' 'D'})) = {1, 1};
或
data(2, ismember(data.Properties.VariableNames, {'B' 'D'})) = deal({1});
或者更直接地
data.B(2) = 1;
data.D(2) = 1;
以上任一项都会产生
data =
A B C D
_ _ _ _
0 0 0 0
0 1 0 1
0 0 0 0