使用应用类型函数索引(子集化)矩阵?

时间:2014-07-12 09:54:23

标签: r apply lapply

我想将每一行与矩阵分开并应用一个带有两个参数的函数。 例如,请考虑以下代码

Mat <- matrix(1:100,nrow=10)

    for(i in 1:nrow(Mat)){
    x <- Mat[i,]
    y <- Mat[-i,]
    function(x,y)
    } 

此循环运行速度非常慢。我想避免这个for循环并使用某种类型的应用函数。我无法使用这些函数对矩阵进行子集化。我尝试列出所有行和子集化矩阵以使用Mapmapply,但该列表变得太大而无法放入内存中。有可能以其他方式吗?请帮忙。

修改 这是我正在运行的函数是循环

fun <- function(x,y){
      y <- y[,!is.na(x)]
      x <- x[!is.na(x)]
      if(length(x) > 10){
            y <- y[apply(y,1,function(x){!TRUE %in% is.na(x)}),]
            testMatrix <- matrix(0,nrow=2,ncol=2)
            testMatrix[1,1] <- sum(x)
            testMatrix[1,2] <- length(x)
            testMatrix[2,1] <- sum(apply(y,1,sum))
            testMatrix[2,2] <- sum(apply(y,1,length))
            P_Value <- chisq.test(testMatrix)$p.value
      }
      else{
            P_Value <- NULL
      }
      return(P_Value)
}

0 个答案:

没有答案