将rownames和dim添加到S3类

时间:2015-07-07 06:57:11

标签: r

基于此问题Link data.frame and matrix(接受的答案),我尝试使用此命令将dim添加到S3类:

dim.JoinedUp <- function(x)
{
    print(paste(dim(x$data_frame), dim(x$matrix)))
}

此功能有效,但rownames存在问题:

rownames.JoinedUp <- function(x)

{
    print(rownames(x$data_frame))
}

当我输入dim时,我得到了rownames(new_obj)个结果。

1 个答案:

答案 0 :(得分:1)

这是因为rownames不是S3方法。请参阅rownames

的定义
function (x, do.NULL = TRUE, prefix = "row") 
{
    dn <- dimnames(x)
    if (!is.null(dn[[1L]])) 
        dn[[1L]]
    else {
        nr <- NROW(x)
        if (do.NULL) 
            NULL
        else if (nr > 0L) 
            paste0(prefix, seq_len(nr))
        else character()
    }
}
<bytecode: 0x3d0f2b0>
<environment: namespace:base>

它会调用dimnames,因此您必须为您的班级创建方法dimnames。类似的东西:

dimnames.JoinedUp <- function(x) {
   dimnames(x$data_frame)
}