2012-10-08 27 views
1

我是R新手,但我有一個微陣列數據集。我在一個位置有一個NA值,我嘗試從庫(impute)使用impute.knn(),但是在通過impute.knn()函數運行矩陣後,它似乎變成另一個結構。任何人都可以解釋發生了什麼?當我通過impute.knn運行它時,Matrix會變成別的東西。

> m <- as.matrix(m) 

# checking structure 
> str(m) 
    num [1:22283, 1:20] 1942.1 40.1 72.1 4693.6 35.9 ... 
    - attr(*, "dimnames")=List of 2 
    ..$ : chr [1:22283] "1007_s_at" "1053_at" "117_at" "121_at" ... 
    ..$ : chr [1:20] "GSM146778-Normal" "GSM146780-Normal" "GSM146782-Normal" 

# checking missing value of cell 
> m[x,y] 
[1] NA 

# impute missing value 
> m.i <- impute.knn(m, 6) 

# check value of imputed value 
> m.i[x,y] 
Error in r.imp["206054_at", "GSM146784-Normal"] : incorrect number of dimensions 

# check structure of imputed matrix 
> str(m.i) 
List of 3 
$ data  : num [1:22283, 1:20] 1942.1 40.1 72.1 4693.6 35.9 ... 
..- attr(*, "dimnames")=List of 2 
.. ..$ : chr [1:22283] "1007_s_at" "1053_at" "117_at" "121_at" ... 
.. ..$ : chr [1:20] "GSM146778-Normal" "GSM146780-Normal" "GSM146782-Normal" "GSM146784-Normal" ... 
$ rng.seed : num 3.62e+08 
$ rng.state: int [1:626] 403 50 1992223309 -108730617 1600482030 698744776 
+0

什麼是'x',什麼是'y'?請發佈一個可重複的例子! - 包含數據的一部分 – mnel

+0

@mnel,x和y是行/列名稱。詹姆斯解釋說,你可以用'$'字符來調用矩陣,所以我得到了我所需要的。謝謝你的幫助! –

+0

很高興聽到您解決了您的問題,但發佈可重複使用的示例仍然不錯(如您在其他問題中所做的那樣) – mnel

回答

3

它看起來像impute.knn函數返回一個列表,其中包含關於插補的矩陣和其他數據。嘗試使用:

m.i$data[x,y] 
+0

我甚至不知道你可以調用這些變量。這將是非常有價值的。還有一個問題:有沒有辦法保存數據?當我嘗試> m.i < - as.matrix(m.i $ data)時,出現錯誤:$運算符對原子向量無效 –

+0

'm.i $ data'是矩陣。當你覆蓋,你確定你還沒有調用這個,現在'm.i'不再是列表嗎? – James

+0

啊,是的;我的錯誤。感謝您的澄清 –

相關問題