2014-12-11 69 views
1

所以我从CSV中获取了一些信息,并将其存储为矩阵,并试图计算结果中的以下操作,但它给了我一个2×2的NA数组。在这里没有看到问题。交叉产品矩阵意外地充满了NAs

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),他们的样子我怎么指望他们,所以我矩阵乘以2×N个矩阵的NX2矩阵(n为喜欢193的一些大的数字)等矩阵产品应该有明确的定义并给出一个有意义的2x2答案。

任何想法可能会出错?

注:当我尝试

一个< - rbind(C(1,2),C(3,4)) T(A)%*%一

它给所期望的结果。不知道我和数据之间的重要区别是什么。

+1

任何NA在您的数据?试试'sum(is.na(X))'。 – flodel 2014-12-11 02:36:04

+0

啊,我真的不认为会有,但你说得对,有。 – Addem 2014-12-11 02:38:40

+0

@flodel等待,当我做'sum(is.na(X))'它打印7.但是当我输入'sum(is.na(X [,1]))'它打印0并且我得到相同的当我输入'sum(is.na(X [,2]))'。这是唯一的两列,所以......任何想法的WTF? – Addem 2014-12-11 02:49:42

回答

4

让我们做出答案。对于填充NA的叉形产品,您必须在X内每列至少有一个NA。您可以通过运行找到的每列NA S中的号码:

colSums(is.na(X)) 

和所有的可能性,你将有

all(colSums(is.na(X)) > 0) 
# [1] TRUE