看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我想寫一個function來幫我批次合併表格,直接執行沒有問題 但是包成function來測試就出錯 (然後我不知道問題再哪...) function中有使用dplyr以及tidyr [程式範例]: DateCollection <- function(CountTable, Date){ dataTable <- CountTable[CountTable[["Date"]]==Date,] groupTable.temp <- gather(GroupTable, Ref_Name, Mut_Name, key = Type, value = Seq_Name) time.vector <- unique(dataTable[["Time"]]) temp.table <- list() for(i in time.vector){ dataTable.time <- dataTable[dataTable[["Time"]]==i, c(3:4)] colnames(dataTable.time) <- c("Seq_Name", "Count") groupTable.temp <- dplyr::left_join(groupTable.temp, dataTable.time, by = c("Seq_Name" = "Seq_Name")) %>% dplyr::select(Group_No, Type, Count) %>% tidyr::spread(Type, Count) temp.table[[i]] <- groupTable.temp } return(temp.table) } } 針對合併表格的部份(dplyr::left_join)直接執行做測試是沒有問題,但是包成function 來測試以後就會有錯誤訊息 錯誤: `by` can't contain join column `Seq_Name` which is missing from LHS 請教各位,我弄錯、還是沒弄清楚什麼...謝謝 [環境敘述]: R version 3.5.1 (2018-07-02) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Linux Mint 19 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.32.9 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1545189293.A.6C2.html ※ 編輯: resentis (140.109.32.9), 12/19/2018 11:59:01
andrew43: 在出錯的上一步先把二個表格的colnames()印出來檢查 12/19 14:04
resentis: 謝謝,我先試試 12/19 16:18
ixjnkeewnoxx: 是不是gather中GroupTable沒在function裡指定? 12/19 16:41
resentis: GroupTable是在global env裡的另一個variable,因為出錯 12/20 12:33
resentis: 都不是報他的問題所以我覺得那邊應該沒問題(?) 12/20 12:33
ixjnkeewnoxx: 應該是說你給的錯誤訊息是join的左邊dataframe沒辦 12/25 16:02
ixjnkeewnoxx: 法抓到seq_name的欄位 所以要去看一下grouptable. 12/25 16:02
ixjnkeewnoxx: temp有沒有這個欄位的名稱 12/25 16:02
resentis: 有這個欄位是沒有問題的,在包成function之前都有一步一 12/26 20:27
resentis: 步做過測試,問題就在不知道為什麼包成function後,就抓 12/26 20:28
resentis: 不到了...(神秘..) 12/26 20:29