Matlab将值从一列映射到映射中的值

Matlab将值从一列映射到映射中的值,matlab,dictionary,Matlab,Dictionary,在MATLAB R2016a中,我正在读取一个表格,并从其两列(水果(文本)和卡路里(数字)创建一个地图: 我还有另一个表,其中有一个名为Food(TEXT)的列,多次包含水果列的所有值: table = readtable('table.csv'); 我想在表中创建另一列,其中包含table.food中每种食物的卡路里。这是通过使用Map将table.Food中的值映射到卡路里来实现的 我已尝试以下操作,但出现错误: Map(table.Food) Error using containe

在MATLAB R2016a中,我正在读取一个表格,并从其两列(水果(文本)和卡路里(数字)创建一个地图:

我还有另一个表,其中有一个名为Food(TEXT)的列,多次包含水果列的所有值:

table = readtable('table.csv');
我想在表中创建另一列,其中包含table.food中每种食物的卡路里。这是通过使用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的函数可以实现这一点。

您无法传递单元格数组的映射,因此请尝试循环或使用cellfun:

cellfun(@(x) M(x), table.Food)

您无法传递映射单元格数组,因此请尝试循环或使用cellfun:

cellfun(@(x) M(x), table.Food)

我试图避免循环,因为我希望Matlab能够处理矢量化的数据结构。我使用cellfun(@(x)Map(x),table.Food)创建了我想要的列。我试图避免循环,因为我希望Matlab能够处理矢量化的数据结构。我使用cellfun(@(x)Map(x),table.Food)创建了我想要的专栏。