我有一个 CSV 格式的文本文件,如下所示:
name,mi,km,sp
Aa,2.6,4.1843024285,3
Bb,12.7,20.4387080162,5
Cc,104,167.3720971402,9
Dd,8816,14188.0039268069,40
Ee,11669,18779.4711685469,39
Ff,77793,125195.93800795,84
Gg,103723,166926.307996846,76
第一列是字符串类型,第二列和第三列是实数值,第四列是整数数值。
我使用以下脚本来读取数据:
pkg load io
data = csv2cell("data.csv", 1)
sp = data(:,4) % Read 'sp' colunm
它看起来读起来很好,但是当我尝试使用“sp”变量中的数据创建条形图时,使用命令 bar(sp) 我收到错误:
error: bar: Y must be numeric
csv2cell 函数不是应该能够读取混合类型的数据吗?但读取后是否需要将数据转换为各自的值呢?如果是这样,我该怎么做?
预先感谢您可以提供的任何帮助。
编辑:尝试类似的东西
sn = str2num(sp)
也没有帮助,因为在这种情况下我收到了消息:
error: str2num: S must be a string or string array
然后我尝试使用
datan = str2double(data)
它只是返回一个 NaN 矩阵
我依然茫然。
看看您正在创建的数据,我发现:
请注意,您创建的不是数字数组。这是一个元胞数组。请参阅花括号。要转换
sp
为数值数组,您可以使用cell2mat
:现在
bar(sp)
应该可以正常工作了。另外,如果您实际上不需要文本标签,您可以执行所需的操作,而无需通过元胞数组。
使用
dlmread
orcsvread
(csvread 实际上只是 dlmread 的包装器):产生相同的输出。(如果您没有添加“1, 1”,
csvread
它将在任何有字符串的地方生成一个带有零的数组。然后您可以只用实际数据绘制子集。)