相关疑难解决方法(0)

如何检查R中对象类敏感的函数的代码

我正在尝试编写一个函数来完成一项特定的工作(在我的例子中,分析异常值的数据集),所以我想要做的第一件事就是看看其他人是如何完成类似的工作的.

我可以这样做来加载一个特定的包并检查一个函数的代码,但是一些函数似乎依赖于你抛出的对象类

>library(outliers)
> fix(outlier)

function (x, opposite = FALSE, logical = FALSE) 
{
    if (is.matrix(x)) 
        apply(x, 2, outlier, opposite = opposite, logical = logical)
    else if (is.data.frame(x)) 
        sapply(x, outlier, opposite = opposite, logical = logical)
    else {
        if (xor(((max(x) - mean(x)) < (mean(x) - min(x))), opposite)) {
            if (!logical) 
                min(x)
            else x == min(x)
        }
        else {
            if (!logical) 
                max(x)
            else x == max(x)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你如何看待根据对象改变的代码?

编辑:

好吧,Palm < - 面子.我作为一个例子使用的函数只调用它自己,但是他的代码就在那里......我已经看到了其他的例子(但是不能想到任何随便的)函数确实做了其他事情,这取决于抛出的对象的类在它,所以问题,即使这是一个坏的例子!

r function

9
推荐指数
2
解决办法
1万
查看次数

将日期转换为年季度格式

我有一堆格式的日期,yyyy-mm-dd我想将它们转换为一年中的季度的yyyy-q格式qq(所以月 1, 2, 3 映射到 q=1 和 4, 5, 6 映射到 q =2 等)。我使用以下函数来完成此操作:

get_month <- function(d) { return(as.numeric(format(d, "%m")))}
get_qtr <- function(d) {
f <- function(m) {
    if (m %in% c(1,2,3)) { return(1) }
    else if (m %in% c(4,5,6)) { return(2) }
    else if (m %in% c(7,8,9)) { return(3) }
    else if (m %in% c(10,11,12)) { return(4) }
}
m <- get_month(d)
r <- sapply(m, f)
return(r)
}
Run Code Online (Sandbox Code Playgroud)

然而,这是非常缓慢的。有没有更快的方法来做到这一点?

r date date-format

3
推荐指数
1
解决办法
1540
查看次数

查看内置R包的来源

可能重复:
查看R包的来源

我想看看stats :: reorder的源代码.

这个答案似乎不适用于编译为字节码的内置包:

> stats::reorder
function (x, ...) 
UseMethod("reorder")
>bytecode: 0x103321718<
>environment: namespace:stats<

r

1
推荐指数
1
解决办法
2283
查看次数

标签 统计

r ×3

date ×1

date-format ×1

function ×1