作者resentis (Ask and It's Given)
看板R_Language
標題[問題] 函數中使用left_join出錯
時間Wed Dec 19 11:14:51 2018
[問題類型]:
程式諮詢(我想用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