Chciałbym regresować wektor B względem każdej kolumny w macierzy A. Jest to trywialne, jeśli nie ma brakujących danych, ale jeśli macierz A zawiera brakujące wartości, to moja regresja w stosunku do A jest ograniczona i obejmuje tylko wiersze, w których wszystkie wartości są obecne (domyślne zachowanie na.omit ). To powoduje nieprawidłowe wyniki dla kolumn bez brakujących danych. Mogę regresować macierz kolumn B względem pojedynczych kolumn macierzy A, ale mam tysiące regresji do wykonania, a to jest zbyt wolne i nieeleganckie. Na.exclude funkcja wydaje się być zaprojektowany dla tej sprawy, ale nie mogę tego dokonać. Co robię tutaj źle? Używanie R 2.13 na OSX, jeśli ma to znaczenie.
A = matrix(1:20, nrow=10, ncol=2)
B = matrix(1:10, nrow=10, ncol=1)
dim(lm(A~B)$residuals)
# [1] 10 2 (the expected 10 residual values)
# Missing value in first column; now we have 9 residuals
A[1,1] = NA
dim(lm(A~B)$residuals)
#[1] 9 2 (the expected 9 residuals, given na.omit() is the default)
# Call lm with na.exclude; still have 9 residuals
dim(lm(A~B, na.action=na.exclude)$residuals)
#[1] 9 2 (was hoping to get a 10x2 matrix with a missing value here)
A.ex = na.exclude(A)
dim(lm(A.ex~B)$residuals)
# Throws an error because dim(A.ex)==9,2
#Error in model.frame.default(formula = A.ex ~ B, drop.unused.levels = TRUE) :
# variable lengths differ (found for 'B')