-1

3 つのデータ行列MatZMatX、およびがあり、行列、MatYの各列は、同じ発現プローブの一連の観測に対応します。すべての列について、およびに対して回帰したい、つまりZYXiZXY

lm(MatZ[,i]~MatX[,i]+MatY[,i])

すべての列をループしiます。これの問題は、 の一部の列MatXがすべてであることNAです。したがって、のすべての要素が である場合(つまり、回帰を除外する場合)に対してlmの線形回帰を実行し、の観測が定義されている場合は線形モデルで両方を使用する引数が必要です。そのままでは、エラーが発生します。MatZ[,i]MatY[,i]MatX[,i]NAMatX[,i]X0 (non-NA) cases in the lm call

4

3 に答える 3

0
MatZ <- matrix(rnorm(1000),nrow=100)
MatX <- matrix(rnorm(1000),nrow=100)
MatY <- matrix(rnorm(1000),nrow=100)

MatX[,2] <- NA
MatY[,4] <- NA

condlm <- function(i){
    if(sum(is.na(MatX[,i]))==dim(MatZ)[1])
        lm <- lm(MatZ[,i]~MatY[,i])
    else if(sum(is.na(MatY[,i]))==dim(MatZ)[1])
        lm <- lm(MatZ[,i]~MatX[,i])
    else
        lm <- lm(MatZ[,i]~MatX[,i]+MatY[,i])
}

lms <- lapply(1:dim(MatZ)[2], condlm)
lms
于 2013-06-10T22:01:19.537 に答える