2014-12-11 4 views
1

Итак, я взял некоторую информацию из CSV, сохранил ее как матрицу и попытался вычислить следующие операции с результатом, но дал мне массив 2x2 из NA. Не видя проблемы здесь.матрица кросспроизведения неожиданно заполнена NA

data <- read.csv('qog.csv', sep=';') 
X <- matrix(log(data$wdi_gnipc)) 
X <- cbind(X, data$ciri_empinx_new) 
t(X) %*% X 

Когда я смотрю на X и T (X) они похожи, как я ожидаю их, поэтому я матрица умножения матрицы 2XN с матрицей NX2 (п некоторое большое число, например, 193) и так матричный продукт должен быть четко определен и дать значимый ответ 2x2.

Любые идеи, что может пойти не так?

Примечание: При попытке

< - rbind (с (1,2), с (3,4)) т (а)% *% в

это дает желаемый результат , Не уверен, что важная разница между тем и тем, что я делаю с данными.

+1

Любой NA в ваших данных? Попробуйте 'sum (is.na (X))'. – flodel

+0

А, я действительно не думал, что так будет, но ты прав, есть. – Addem

+0

@flodel Подождите, когда я сделаю 'sum (is.na (X))' он печатает 7. Но когда я ввожу 'sum (is.na (X [, 1])), он печатает 0, и я получаю то же самое когда я ввожу 'sum (is.na (X [, 2])). Это только две колонки, поэтому ... любая идея WTF? – Addem

ответ

4

Давайте сделаем этот ответ. Для перекрестного продукта, который должен быть заполнен NA, вы должны иметь по крайней мере один NA за колонку внутри X. Вы можете найти число NA с на колонке, запустив:

colSums(is.na(X)) 

и всей вероятности, вы будете иметь, что

all(colSums(is.na(X)) > 0) 
# [1] TRUE 
Смежные вопросы