我想将每一行与矩阵分开并应用一个带有两个参数的函数。 例如,请考虑以下代码
Mat <- matrix(1:100,nrow=10)
for(i in 1:nrow(Mat)){
x <- Mat[i,]
y <- Mat[-i,]
function(x,y)
}
此循环运行速度非常慢。我想避免这个for
循环并使用某种类型的应用函数。我无法使用这些函数对矩阵进行子集化。我尝试列出所有行和子集化矩阵以使用Map
或mapply
,但该列表变得太大而无法放入内存中。有可能以其他方式吗?请帮忙。
修改 这是我正在运行的函数是循环
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)
}