使用Sparklyr进行计数模式匹配

使用Sparklyr进行计数模式匹配,r,apache-spark,sparklyr,R,Apache Spark,Sparklyr,我一直在尝试使用Sparkyr计算模式匹配 我试图数一数这个模式的时间;显示在可变房间号中 这是我的桌子: room_number A12;A19 A13 A15;A14;A20 当我不使用Sparkyr时,我可以使用此功能: count.matches <- function(pat, vec) sapply(regmatches(vec, gregexpr(pat, vec)), length) mytable <- my

我一直在尝试使用Sparkyr计算模式匹配

我试图数一数这个模式的时间;显示在可变房间号中

这是我的桌子:

room_number      
A12;A19        
A13            
A15;A14;A20 
当我不使用Sparkyr时,我可以使用此功能:

count.matches <- function(pat, vec) sapply(regmatches(vec, gregexpr(pat, vec)), length)

mytable <- mytable %>%
mutate(number_pattern = mapply(count.matches, c(';'), list(room_number)))
如果我尝试在distributed R中使用SparkyR使用spark_apply而不是mapply应用代码,我会得到以下消息:

mytable  <- mytable  %>%
+   mutate(number_pattern = spark_apply(count.matches, c(';'), list(room_number)))
glimpse(mytable)
UseMethodescape中出错: 没有适用于类函数对象的“escape”方法

你有什么建议吗? 感谢您的帮助

spark_apply是一个独立的函数,不能在mutate中使用。此外,它没有与mapply相同的API:

mytable  <- mytable  %>%
+   mutate(number_pattern = spark_apply(count.matches, c(';'), list(room_number)))
glimpse(mytable)
count.matches <- function(pat) function(df) {
  f <- function(vec) sapply(regmatches(vec, gregexpr(pat, vec)), length)
  dplyr::mutate(df, number_pattern = f(room_number))
}

mytable %>% spark_apply(count.matches(";"))