Im Matlab properties
function听起来像R中的命令可能有效等效,使您熟悉工作环境中的特定对象,提供有关其结构的信息(data.frame,matrix,list,vector)和变量类型(字符,数字)(例如,使用R命令str()
),维度(可能使用调用dim()
)和变量名称(names()
)。
但是,此功能在Octave中无法运行:
>> properties(data)
warning: the 'properties' function is not yet implemented in Octave
我按照上面链接的帖子的评论中的建议安装了包dataframe
:
pkg install -forge dataframe
并加载pkg load dataframe
但我找不到在工作区中获取datset data.mat
的结构和维度摘要的方法。
我相信它是一个由4 x 372,550数值矩阵组成的结构;两个4 x 46,568数值矩阵和一个256 x 1字符矩阵。要获得此信息,我必须滚动浏览数据的许多页面。
此信息在Octave IDE上不可用,我得到:
Name Class Dimensions
data struc 1 x 1
与对象data
的复杂性相去甚远。
在Octave中获取有关工作区中对象的一些信息的智能方法是什么?
对提供的第一个答案进行跟进,以下是whos
:
>> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
data 1x1 7452040 struct
Total is 1 element using 7452040 bytes
这对于data
真正包含的内容并不特别有用。事实上,我刚刚发现了一种在data
中提取名称的方法:
>> fieldnames(data)
ans =
{
[1,1] = testData
[2,1] = trainData
[3,1] = validData
[4,1] = vocab
}
现在如果我打电话
>> size(data)
ans =
1 1
输出不是很有用。另一方面,知道data
中我可以做的矩阵的名称
>> size(data.trainData)
ans =
4 372550
确实提供了丰富的信息。
答案 0 :(得分:2)
如果您输入变量的名称,您将会看到有关它的信息。在你的情况下,它是一个结构,所以它会告诉你字段名称。相关功能包括:size
,ndims
,class
,fieldnames
等。
size(var)
class(var)
等
您可以参考.mat
。也许您有一个MAT文件,可以使用load filename
加载。加载后,您可以检查并使用文件中的变量。
whos
打印关于内存中变量的简单信息,最有用的是查看存在哪些变量。
跟进您编辑过的问题。这适用于Octave:
for s=fieldnames(data)'
s=s{1};
tmp=data.(s);
disp([s,' - ',class(tmp),' - ',mat2str(size(tmp))])
end
它打印结构的每个成员的基本信息。它确实假设data
是一个1x1结构数组。请注意,struct可以是一个数组:
data(2).testData = [];
使data
结构成为2x1数组。这就是size(data)
相关的原因。 class
也很重要(它显示在whos
的输出中。变量可以是double
类型(普通数组),也可以是其他数字类型logical
,struct
,cell
(数组数组),或者您自己编写的自定义类。
我强烈建议您阅读关于MATLAB / Octave的介绍性文本,因为它与R的工作方式截然不同。它不仅仅是一种不同的语言,它还是一个完全不同的世界。