[问题] 函数中使用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