在Matlab数据集数组中将变量设置为单个值

3

假设我有一个数据集数组(来自统计工具箱):

>> myds
myds = 
    Observation    SheepCount
    1              88        
    2               2        
    3              14        
    4              12        
    5              40

我正在从各种来源整理数据,因此我想在将此数据集与其他数据集一起使用 vertcat 之前,将这些观测值中的 'Location' 设置为 4。在普通矩阵中,您可以说 myds(:, 3) = 4,这会将 4 广播到矩阵中的所有空间。
有没有一种方法可以在不使用 repmat 的情况下对数据集进行类似操作?
我尝试过但不起作用的事情:
myds(:, 'Location') = 4
myds(:).Location = 4
myds.Location(:) = 4
myds.Location = 4

可以正常工作的东西:

myds.Location = 4; myds.Location(:) = 4; % have to run both
myds.Location = repmat(4, length(myds), 1);

那么,我是否必须克服对repmat的厌恶?谢谢。

编辑:我想要的实际上是避免指定4的数组维度。

2个回答

2
您可以尝试使用ones代替repmat
myds.Location=4*ones(1,5);

谢谢,这很好,但在任何非微不足道的情况下,它仍然必须是4*ones(length(myds),1),这仍然有点丑陋。 - rescdsk
1
我理解你想做什么,但我认为这不能用数据集来实现,虽然使用数组可以完美地解决问题。你的第一个建议可能是最简单的。就个人而言,我会说 myds.Location=4*ones(size(myds.Observation)) 很清晰易懂,并且只需一行代码即可完成任务。 - user616736

1

这不是很优雅,但你也可以尝试:

myds.Location= myds.Observation*0 + 4;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接