作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1545189293.A.6C2.html
※ 编辑: resentis (140.109.32.9), 12/19/2018 11:59:01
1F:→ andrew43: 在出错的上一步先把二个表格的colnames()印出来检查 12/19 14:04
2F:→ resentis: 谢谢,我先试试 12/19 16:18
3F:→ ixjnkeewnoxx: 是不是gather中GroupTable没在function里指定? 12/19 16:41
4F:→ resentis: GroupTable是在global env里的另一个variable,因为出错 12/20 12:33
5F:→ resentis: 都不是报他的问题所以我觉得那边应该没问题(?) 12/20 12:33
6F:→ ixjnkeewnoxx: 应该是说你给的错误讯息是join的左边dataframe没办 12/25 16:02
7F:→ ixjnkeewnoxx: 法抓到seq_name的栏位 所以要去看一下grouptable. 12/25 16:02
8F:→ ixjnkeewnoxx: temp有没有这个栏位的名称 12/25 16:02
9F:→ resentis: 有这个栏位是没有问题的,在包成function之前都有一步一 12/26 20:27
10F:→ resentis: 步做过测试,问题就在不知道为什麽包成function後,就抓 12/26 20:28
11F:→ resentis: 不到了...(神秘..) 12/26 20:29