使用 Sparklyr 计数模式匹配
Count Pattern Matching using Sparklyr
我一直在尝试使用 Sparklyr 计算模式匹配。
我正在计算模式“;”出现的次数出现在变量 room_number
这是我的表:
room_number
A12;A19
A13
A15;A14;A20
当我不使用 Sparklyr 时,我可以使用这个功能:
count.matches <- function(pat, vec) sapply(regmatches(vec, gregexpr(pat, vec)), length)
mytable <- mytable %>%
mutate(number_pattern = mapply(count.matches, c(';'), list(room_number)))
我得到:
room_number number_pattern
A12;A19 1
A13 0
A15;A14;A20 2
如果我尝试使用 spark_apply
而不是 mapply
在带有 sparklyr 的分布式 R 中应用代码,我会收到以下消息:
mytable <- mytable %>%
+ mutate(number_pattern = spark_apply(count.matches, c(';'), list(room_number)))
glimpse(mytable)
Error in UseMethod("escape") :
no applicable method for 'escape' applied to an object of class "function"
你有什么建议吗?
谢谢你帮助我
spark_apply
是一个独立函数,不能在 mutate
中使用。它也没有与 mapply
:
相同的 API
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(";"))
我一直在尝试使用 Sparklyr 计算模式匹配。
我正在计算模式“;”出现的次数出现在变量 room_number
这是我的表:
room_number
A12;A19
A13
A15;A14;A20
当我不使用 Sparklyr 时,我可以使用这个功能:
count.matches <- function(pat, vec) sapply(regmatches(vec, gregexpr(pat, vec)), length)
mytable <- mytable %>%
mutate(number_pattern = mapply(count.matches, c(';'), list(room_number)))
我得到:
room_number number_pattern
A12;A19 1
A13 0
A15;A14;A20 2
如果我尝试使用 spark_apply
而不是 mapply
在带有 sparklyr 的分布式 R 中应用代码,我会收到以下消息:
mytable <- mytable %>%
+ mutate(number_pattern = spark_apply(count.matches, c(';'), list(room_number)))
glimpse(mytable)
Error in UseMethod("escape") : no applicable method for 'escape' applied to an object of class "function"
你有什么建议吗? 谢谢你帮助我
spark_apply
是一个独立函数,不能在 mutate
中使用。它也没有与 mapply
:
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(";"))