【问题标题】:Convert a column of a table to vector将表格的一列转换为向量
【发布时间】:2017-05-29 06:48:39
【问题描述】:

我有一个大小为 10000*1 的名为 cellName 的表。每个条目都是单元名称的字符串。每个单元格名称的长度不同。 我想将它强制转换为具有 10000 个元素的向量。我怎么能在matlab中做到这一点?在 r 中应该很容易,但我在 matlab 中没有找到这样的命令。

或者:我一开始就使用 readtable 从 csv 文件加载 10000*1 表。如果我也可以直接将 10000*1 条目作为单个向量读取,那就太好了。我一开始就是这样做的。

cellName = readtable('cell.csv');
cellName=cellName(1:10000,1);

提前谢谢你!

清晰的例子:A 是一个 5*1 的表格。 A=苹果 香蕉 梨 桃 西瓜

我想将 A 强制转换为 5 个元素的向量:A=[apple,banana,pear,peach,watermelon] 而不是一张桌子

【问题讨论】:

  • 请提供您想要的清晰示例
  • @saeedmasoomi 已编辑

标签: matlab


【解决方案1】:

如果你想要一个字符元胞数组,我可能会有你的答案。我还建议您阅读如何access data in a table

readtable 成功时返回 Matlab table 数据类型。 table 可以像 struct 一样使用您的列名作为字段名进行访问,或者像访问元胞数组一样由 {} 运算符索引。

在您的示例中,假设 A 是 readtable 的返回值,而您的

A = table({'apple','banana','pear','peach','watermelon'}','variableNames',{'cellName'})

然后你可以调用

cellName = A.cellName 

cellName = A{:,1}

获取您的单元格数组。

【讨论】:

  • 但我想要一个向量而不是一个元胞数组。我试过 cell2mat(cellName) 但它不起作用。有什么想法可以代替向量吗?
  • 不能将各种长度的字符串存储在常规数值向量中。它们必须存储在单元格数据类型中,并且您可以像使用单元格访问运算符 {} 的常规向量一样访问它。顺便说一句,Nx1 单元格是 Matlab 中的向量。您可以在我的示例中使用 isvector(cellName) 进行测试。
  • s1 = {'Thanks' 'so' 'much' 'Chang'}; s2 = {'你''是''正确的。' }; s3 = {s1{:},s2{:}}
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2011-07-07
  • 2016-04-10
  • 2020-06-21
相关资源
最近更新 更多