R-dplyr合并到用户定义的函数中 [英] R - dplyr merge in user-defined function
本文介绍了R-dplyr合并到用户定义的函数中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图创建如下的合并函数:
定义的函数
merge_tables< -函数(inputdata1,inputdata2,byvar1,byvar2){
byvar1<-enquo(byvar1)
byvar2<-enquo(byvar2)
outputdata< ;-inputdata1%>%
full_join(inputdata2,by = c(rlang :: quo_text(byvar1)= rlang :: quo_text(byvar2)))
return(outputdata)
}
使用以下数据和代码运行时出现错误:
模拟数据
set.seed(1)
data1 <-data.frame(ID = sample(1:2 ),letter1 = sample(字母,2,replace = TRUE))
data2<-data.frame(PatID = sample(1:3),letter2 = sample(letters,3,replace = TRUE))
使用已定义函数的代码
testing_merge< ;-merge_tables(data1,data2,ID,PatID)
错误消息
错误:出现意外的 =:
$ p $中意外的'}' p>
" outputdata<-inputdata1%>%
full_join(inputdata2,by = c((rlang :: quo_text(byvar1))="
>
> return(outputdata)
错误:未找到对象'outputdata'
>}
错误:}''
我想知道是否有人可以看到任何明显的问题吗?...非常感谢。
解决方案这应该起作用:
merge_tables<-函数(inputdata1,inputdata2,byvar1,byvar2){
byvar1<-enquo(byvar1)
byvar2<-enquo(byvar2)
by<-setNames(quo_name(byvar2),quo_name(byvar1))
outputdata<-full_join(inputdata1,inputdata2,by = by)
return(outputdata)
}
返回:
testing_merge<-merge_tables(data1 ,data2,ID,PatID)
testing_merge
ID letter1 letter2
1 1或
2 2 xq
3 3< NA> b
I am trying to create a merge function as follows:
Defined function
merge_tables <- function(inputdata1, inputdata2, byvar1, byvar2) { byvar1 <- enquo(byvar1) byvar2 <- enquo(byvar2) outputdata <- inputdata1 %>% full_join(inputdata2, by = c(rlang::quo_text(byvar1) = rlang::quo_text(byvar2))) return(outputdata) }
I am getting an error when I run using the following data and code:
Mock data
set.seed(1) data1<- data.frame(ID = sample(1:2), letter1 = sample(letters, 2, replace = TRUE)) data2<- data.frame(PatID = sample(1:3), letter2 = sample(letters, 3, replace = TRUE))
Code using the defined function
testing_merge <- merge_tables(data1, data2, ID, PatID)
Error message
Error: unexpected '=' in: " outputdata <- inputdata1 %>% full_join(inputdata2, by = c( (rlang::quo_text(byvar1)) =" > > return(outputdata) Error: object 'outputdata' not found > } Error: unexpected '}' in "}"
I wonder if anyone can see any glaring issues?... Many thanks.
解决方案This should work:
merge_tables <- function(inputdata1, inputdata2, byvar1, byvar2) { byvar1 <- enquo(byvar1) byvar2 <- enquo(byvar2) by <- setNames(quo_name(byvar2), quo_name(byvar1)) outputdata <- full_join(inputdata1, inputdata2, by = by) return(outputdata) }
Returning:
testing_merge <- merge_tables(data1, data2, ID, PatID) testing_merge ID letter1 letter2 1 1 o r 2 2 x q 3 3 <NA> b
这篇关于R-dplyr合并到用户定义的函数中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文