填充缺少列的data.frame

时间:2014-06-09 14:22:46

标签: r

我从R: iterative outliers detection获取了以下功能(这是更新版本):

dropout<-function(x) {
    outliers <- NULL
res <- NULL
    if(length(x)<2) return (1)
    vals <- rep.int(1, length(x))
    r <- chisq.out.test(x)
    while (r$p.value<.05 & sum(vals==1)>2) {
        if (grepl("highest",r$alternative)) {

            d <- which.max(ifelse(vals==1,x, NA))
            res <- rbind(list(as.numeric(strsplit(r$alternative," ")[[1]][3]),as.numeric(r$p.value)),fill=TRUE)

        } 
    else {
            d <- which.min(ifelse(vals==1, x, NA))

        }
        vals[d] <- r$p.value

        r <- chisq.out.test(x[vals==1])
    }

return(res)
}

问题是在每一轮中它都会给我一些缺少的行来填充data.frame

我想填充res但在某些迭代中它包含缺失的值。

我使用了所有可能的东西,例如rbindlist, rbind.fill, rbind (with fill=TRUE),但没有任何效果。

当我做类似的事情时:

res <- c(res,as.numeric(strsplit(r$alternative," ")[[1]][3]),as.numeric(r$p.value))

它有效,但它为每组(V1,V2)创建了2行,最后一列为r$alternative,第二行具有相同的前2列但p-value为而是最后一列。

这就是我如何调用与上述问题类似的数据函数:

outliers <- d[, dropout(V3), list(V1, V2)]

我总是得到这个错误:j doesn't evaluate to the same number of columns for each group

0 个答案:

没有答案