Điều này rất có thể do dbplyr không có bản dịch được xác định để chuyển đổi na.omit hoặc str_count thành postgresql (bản dịch cho paste rất có thể được xác định).
Bạn có thể thay thế str_count và na.omit bằng cách kiểm tra các giá trị bị thiếu trước đó.
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)) %>%
Và nếu paste là vấn đề bạn có thể thay thế nó bằng CONCAT có sẵn của postgresql chức năng.
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)) %>%
Bởi vì CONCAT không phải là một hàm R, dbplyr sẽ chuyển nó như được viết tới postgresql thay vì cố gắng dịch nó.