用于处理R中的可变维度输入的规范模式

时间:2017-07-31 18:14:09

标签: r matrix vector

我正在编写一个处理数字输入的函数,对每列进行一系列计算。 Id'喜欢无缝处理向量和矩阵输入的函数,并返回与输入相同的类。我希望这个工作类似于diff()的工作方式。是否存在在R中实现此规范的规范模式,或者我是否需要对输入的类进行if / else处理?

到目前为止,我提出的最好的是:

bar <- function(x) {
    m <- as.matrix(x)
    m <- apply(m, 2, function(z) log(diff(z)))
    if (is.null(dim(x))) m <- drop(m)
    return(m)
}

1 个答案:

答案 0 :(得分:1)

我不知道那里有规范模式,但是diff函数确实检查输入是否是矩阵以便计算维度/长度,然后使用{对输入进行解除分类{1}},计算r <- unclass(x)与矩阵和向量输入的不同路径的差异(使用r),最后在返回if之前使用class(r) <- oldClass(x)重新应用原始类}。正如你所看到的,这与你所做的事情本质上并没有多大区别,这对我来说似乎很好。

如果要检查r的实现,可以在控制台中输入:

diff()