2016-06-09 94 views
0

我试图使用leave-one-out(LOO)交叉验证来预测来自PCA的一些数据。R预测单行

prcomp顺利,但是当我到predict落入函数得到不高兴

error: 'newdata' must be a matrix or data frame

因为我供给载体(即,单一的行),而不是一个矩阵(即多行)。

我试过as.data.frameas.matrix和各品种上,但我仍然得到错误

error: 'newdata' does not have named columns matching one or more of the original columns`

在我的例子这里loo是LOO指数和mydatamyinfo分别包含数据和元数据。

tdata = mydata[-loo,] 
tinfo = myinfo[-loo,] 

vdata = mydata[loo,] 
vinfo = myinfo[loo,] 

p = prcomp(tdata) 
predict(p, newdata = vdata) 
+0

你有没有尝试过做'as.data.frame'后设置'colnames'? 'colnames(vdata)< - colnames(tdata)'。 – ytk

+0

这个问题似乎是因为R将1xn和nx1矩阵视为相同,数据框最后只有1列。 –

回答

1

没关系,发现:

predict(p, newdata = as.data.frame(t(vdata)))