2016-06-09 109 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)))