首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R编写的.mat文件没有给出正确的输出吗?

使用R编写的.mat文件没有给出正确的输出吗?
EN

Stack Overflow用户
提问于 2014-08-17 12:29:07
回答 2查看 3.7K关注 0票数 2

我有一个.csv文件,我想读取到Octave中(最初尝试使用csvread)。它花的时间太长了,所以我试着使用R来解决这个问题:How to read large matrix from a csv efficiently in Octave这是我在R中做的:

代码语言:javascript
运行
复制
forest_test=read.csv('forest_test.csv')
library(R.matlab)
writeMat("forest_test.mat", forest_test_data=forest_test)

然后我回到Octave,做了这个:

代码语言:javascript
运行
复制
forest_test = load('forest_test.mat')

这不是给我一个矩阵,而是一个结构。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-08-17 22:18:53

为了准确回答您的问题,您使用了错误的load函数。如果您只想将文件中的变量插入到工作区中,则不能将其输出赋值给变量。来自Octave的load帮助文本:

如果使用单个输出参数调用,Octave将返回数据,而不是在符号表中插入变量。如果数据文件仅包含数字(以制表符或空格分隔的列),则返回一个值矩阵。否则,“load”将返回一个结构,其成员与文件中变量的名称相对应。

以我们的案例为例:

代码语言:javascript
运行
复制
## inserts all variables in the file in the workspace
load ("forest_test.mat");
## each variable in the file becomes a field in the forest_test struct
forest_test = load ("forest_test.mat");

但是,你发布的关于Octave在处理CSV文件时速度很慢的链接仍然参考了Octave 3.2.4,这是一个相当旧的版本。您是否确认在最近的版本(上一版本是3.8.2)中仍然是这种情况。

票数 2
EN

Stack Overflow用户

发布于 2014-08-17 15:27:34

有一个用于将数据帧转换为矩阵的函数:

代码语言:javascript
运行
复制
?data.matrix

forest_test=data.matrix( read.csv('forest_test.csv') )
library(R.matlab)
writeMat("forest_test.mat", forest_test_data=forest_test)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25346314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档