我正在写一个函数来处理数字输入,对每列进行一系列计算。 Id'就像无缝处理矢量和矩阵输入并返回与输入相同的类的函数。我期待这样的工作类似于diff()
的作品。在R中是否存在一个规范模式,或者是否需要对输入类进行if/else处理?用于处理R中可变维度输入的规范模式
我都拿出了迄今为止最好的是:
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)
}
我有点困惑。如果你想计算'max(diff(x))',那么将它应用到一个向量的结果是一个标量(即,只有一个数字,diff的最大值),以及将它应用到矩阵的结果是一个向量(矩阵中每列的一个数字)。那么为什么你会想在第一种情况下返回一个向量而在第二种情况下返回一个矩阵呢?如果你只是从你的代码中删除'if'行,你没有得到你需要的东西吗? –
@Oriol,我的坏。更新示例以正确展示。我想要的实际计算是相当涉及,我不认为他们值得重复这里 – Ethan
类似于https://stackoverflow.com/questions/13039997/writing-generic-function-for-tables-that-works-when-输入 - 恰好是vec?rq = 1 – Ethan