dplyr使用問題:data_frames can only contain 1d atomic vectors and lists

分享在使用dplyr時遇到的狀況:screenshot.png

這是一個很平常的將檔案讀進來的步驟,但比較特別的是我使用了readr package的read_csv來讀取。

而讀進來後的nor.count長這樣

screenshot.png

接下來我做這些事情,將column重新命名,且把gene list的名字提取出來,為了等會轉換成單純的matrix,提取後在使用dplyr的select,可以直接去掉gene的這行。當nor.count為完全的numeric matrix時,我將數值做log2 transformatiopn,接下來便要開始來處理資料

screenshot.png

接者想要把資料裡的row不等於0濾掉,所以使用filter上面 (錯誤訊息發生screenshot.png

從錯誤訊息,看起來可能是nor.count的格式不符合,再來看一下現在nor.count變成什麼樣子了

screenshot.png

這時候發現一個奇怪的地方,在nor.count的structure中,看到gene下面還有一個data.frame Gene!!

原來是在tbl_df的object中,用傳統的方式subset他還是會保持tbl_df,不會因此變成atomic vector的形式

screenshot.png

像上面這種是很常見的subsetting的方法,subset完後,就照下面的方式再塞回data.frame中,但在tbl_df的object用此操作則會發生問題,這樣就會變成在data.frame裡面塞入一個data.frame,而這種形式就會造成之後的function無法處理

screenshot.png

所以面對tbl_df就必須乖乖的使用screenshot.png

把gene.list給放回去!

 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s