Jest to najprawdopodobniej spowodowane tym, że dbplyr nie ma zdefiniowanych tłumaczeń do konwersji na.omit lub str_count na postgresql (tłumaczenie dla paste jest najprawdopodobniej zdefiniowany).
Możesz zastąpić str_count i na.omit sprawdzając wcześniej brakujące wartości.
st2tm %>%
mutate(
p1 = lag(pid),
p2 = lead(pid)
) %>%
filter(!is.na(p1),
!is.na(p2)) %>%
mutate(g = paste(p1, ",", pid, ",", p2)) %>%
select(-c(p1, p2)) %>%
A jeśli paste jest problem, który można zastąpić wbudowanym CONCAT postgresql funkcja.
st2tm %>%
mutate(
p1 = lag(pid),
p2 = lead(pid)
) %>%
filter(!is.na(p1),
!is.na(p2)) %>%
mutate(g = CONCAT(p1, ",", pid, ",", p2)) %>%
select(-c(p1, p2)) %>%
Ponieważ CONCAT nie jest funkcją R, dbplyr przekaże ją jako napisaną do postgresql, zamiast próbować ją przetłumaczyć.