在MATLAB R2016a中,我正在读取一个表并从其两列(水果(TEXT)和卡路里(NUMBER))创建地图:
map_table = readtable('map.csv');
Keys = table2cell(map_table(:, 1)); %Fruits
Values = table2cell(map_table(:, 2)); %Calories
Map = containers.Map(Keys, Values);
我还有另一个表,其中包含一个名为Food(TEXT)的列,其中多次包含Fruit列的所有值:
table = readtable('table.csv');
我想用表格中每种食物的卡路里来创建表格中的另一列。这是通过使用Map将table.Food中的值映射为卡路里来实现的。
我尝试了以下操作,但出现错误:
Map(table.Food)
Error using containers.Map/subsref
Specified key type does not match the type expected for this container.
当我在地图中传递单个键时,它确实会返回一个数字:
Map('Apple')
ans = 90
如何完成映射?我知道在 R 中,有一个名为mapvalues的函数可以完成此任务。
答案 0 :(得分:2)
您无法传递“映射单元格数组”,因此请尝试循环或使用cellfun:
cellfun(@(x) M(x), table.Food)