[問題] 函數中使用left_join出錯

作者: resentis (Ask and It's Given)   2018-12-19 11:14:51
[問題類型]:
程式諮詢(我想用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
作者: andrew43 (討厭有好心推文後刪文者)   2018-12-19 14:04:00
在出錯的上一步先把二個表格的colnames()印出來檢查
作者: resentis (Ask and It's Given)   2018-12-19 16:18:00
謝謝,我先試試
作者: ixjnkeewnoxx (Zapdos)   2018-12-19 16:41:00
是不是gather中GroupTable沒在function裡指定?
作者: resentis (Ask and It's Given)   2018-12-20 12:33:00
GroupTable是在global env裡的另一個variable,因為出錯都不是報他的問題所以我覺得那邊應該沒問題(?)
作者: ixjnkeewnoxx (Zapdos)   2018-12-25 16:02:00
應該是說你給的錯誤訊息是join的左邊dataframe沒辦法抓到seq_name的欄位 所以要去看一下grouptable.temp有沒有這個欄位的名稱
作者: resentis (Ask and It's Given)   2018-12-26 20:27:00
有這個欄位是沒有問題的,在包成function之前都有一步一步做過測試,問題就在不知道為什麼包成function後,就抓不到了...(神秘..)

Links booklink

Contact Us: admin [ a t ] ucptt.com