功能类似于Matlab中的head()

时间:2014-10-28 14:53:02

标签: arrays r matlab

我只是试图找出Matlab中的head()中的R是否与table相同?它应该显示/打印数组的前5行。因此,给出以下var1 = transpose(1:6); var2 = transpose(2:7); aa = table(var1,var2);

xx

我正在寻找一个与{:1>相同的功能aa(1:5,:)

var1    var2
____    ____

1       2   
2       3   
3       4   
4       5   
5       6   

ans =

xx(aa)

类似的东西:

head()

我当然可以继续使用上面的索引,但是使用函数会更方便。我在R广泛使用了{{1}}。

3 个答案:

答案 0 :(得分:3)

这里有两个与R中的head()和tail()等效的函数。您只需将源代码复制/粘贴到.m文件中并将其保存在所需的目录中即可:

function head(data, varargin)
%head - displays the first n rows of an array
%
% Syntax:  head(data, n)
%
% Inputs:
%    data - data to display (table, double)
%    n - number of rows (integer, optional input)
%
% Author: Daniel A. Brodén
% KTH, Royal Institute of Technology, Osquldas Väg 10, 100 44, Stockholm
% email: danbro@kth.se
% Website: http://www.kth.se/profile/danbro
% August 2015; Last revision: Aug-2015
% Define parser object
p = inputParser;

% Required inputs
addRequired(p, 'data')

% Default values
default_n = 10;                                 

% Optional inputs
checkInt = @(x) validateattributes(x,{'numeric'},{'integer','positive'});
addOptional(p, 'n', default_n, checkInt)

% Parse inputs
parse(p, data, varargin{:})

% Conditions
if size(p.Results.data, 1) < p.Results.n
    error('Not enough rows')
end

% Return
data(1:p.Results.n,:)
end

尾巴代码

function tail(data, varargin)
%tail - displays the last n rows of an array
%
% Syntax:  tail(data, n)
%
% Inputs:
%    data - data to display (table, double)
%    n - number of rows (integer, optional input)
%
% Author: Daniel A. Brodén
% KTH, Royal Institute of Technology, Osquldas Väg 10, 100 44, Stockholm
% email: danbro@kth.se
% Website: http://www.kth.se/profile/danbro
% August 2015; Last revision: Aug-2015

% Parser object
p = inputParser;

% Required inputs
addRequired(p, 'data')

% Default values
default_n = 10;

% Optional inputs
checkInt = @(x) validateattributes(x,{'numeric'},{'integer','positive'});
addOptional(p, 'n', default_n, checkInt)

% Parse inputs
parse(p, data, varargin{:})

% Conditions
if size(p.Results.data, 1) < p.Results.n
    error('Not enough rows')
end

% Return
data((size(data,1)-p.Results.n + 1):size(data,1),:)
end

答案 1 :(得分:0)

如果你想要的只是前几行,那么只需输入mydata[1:5,]

我使用以下玩具,来自某个人的:-) cgwtools包,它允许您指定要显示的项目数,并且可以根据需要选择跳过一些元素。碰巧的是,我选择不保留维度,以便更容易检查list对象。随意使用此代码&amp;根据您的需要进行修改(例如,如果您只想要数据的&#34; head&#34;,请删除返回最后numel元素的部分。

short <-function (x = seq(1, 20), numel = 4, skipel = 0, ynam = deparse(substitute(x))) 
{
    ynam <- as.character(ynam)
    ynam <- gsub(" ", "", ynam)
    if (is.list(x)) 
        x <- unlist(t(x))
    if (2 * numel >= length(x)) {
        print(x)
    }
    else {
        frist = 1 + skipel
        last = numel + skipel
        cat(paste(ynam, "[", frist, "] thru ", ynam, "[", last, 
            "]\n", sep = ""))
        print(x[frist:last])
        cat(" ... \n")
        cat(paste(ynam, "[", length(x) - numel - skipel + 1, 
            "] thru ", ynam, "[", length(x) - skipel, "]\n", 
            sep = ""))
        print(x[(length(x) - numel - skipel + 1):(length(x) - 
            skipel)])
    }
}

答案 2 :(得分:0)

你可以写:

aa(1:min(5, end), :)

或制作一个相同的功能