Я хочу использовать функции interp
и interp2xyz
из akima
в dplyr
конвейере, поскольку я хотел бы вычислить интерполяцию по групповой переменной и вывести значения xyz И переменную группировки. Поэтому в идеале я бы хотел что-то вроде этого (общее решение):
DATFRAME %>%
group_by(GROUPING VARIABLE) %>%
summarise(interp(x, y , z))
Таким образом, относительно просто вычислить некоторые значения интерполяции для всего фрейма данных, а затем создать другой фрейм данных, который имеет эти значения, используя функции интерполяции из пакета akima
:
library(dplyr)
library(akima)
df <- data.frame(
x=runif(200, 0, 5),
y=runif(200, 0, 5),
z=runif(200, 1, 2),
Group=LETTERS[seq( from = 1, to = 2 )])
interp_df <- interp(x=df$x, y=df$y, z=df$z)
interp2xyz(interp_df, data.frame=TRUE)
Но когда я пытаюсь включить их в схему dplyr
pipe, вот так:
df %>%
group_by(Group) %>%
summarise(interp(x=x, y=y, z=z))
Ошибка: ожидание единственного значения
Или тогда, возможно, используя mutate
:
df %>%
group_by(Group) %>%
mutate(interp(x=x, y=y, z=z))
Ошибка: несовместимый размер (3), ожидание 100 (размер группы) или 1
Я не замужем за решением dplyr
- это только подход, который я могу придумать. Кто-нибудь знает, как вычислить 3D-интерполяцию с помощью группирующей переменной, так что в результате получается фрейм данных со всеми группами и их интерполяциями?