У меня есть два списка фреймов данных, первый список dfs содержит значения, которые расширяются вниз по столбцу, а второй список dfs содержит одиночные значения, подобные этому:
dynamic_df_1 <- data.frame(x = 1:10)
dynamic_df_2 <- data.frame(y = 1:10)
df_list <- list(dynamic_df_1, dynamic_df_2)
df_list
static_df_1 <- data.frame(mu = 10,
stdev = 5)
static_df_2 <- data.frame(mu = 12,
stdev = 6)
static_df_list <- list(stat_df1 = static_df_1,
stat_df2 = static_df_2)
static_df_list
Я хотел бы добавить столбец к каждому фрейму данных (dynamic_df_1 и dynamic_df_2), используя значения из static_df_1 и static_df_2, чтобы выполнить вычисление, где вычисление для dynamic_df_1 вычисляется со static_df_1, а вычисление для dynamic_df_2 вычисляется со static_df_2.
Результат, к которому я стремлюсь, таков:
df_list[[1]] <- df_list[[1]] %>%
mutate(z = dnorm(x = df_list[[1]]$x, mean = static_df_list$stat_df1$mu, sd = static_df_list$stat_df1$stdev))
df_list
df_list[[2]] <- df_list[[2]] %>%
mutate(z = dnorm(x = df_list[[2]]$y, mean = static_df_list$stat_df2$mu, sd = static_df_list$stat_df2$stdev))
df_list
Я могу использовать циклический подход, который мешает более сложным функциям в моем реальном коде:
for (i in 1:length(df_list)) {
df_list[[i]]$z <- dnorm(x = df_list[[i]][[1]], mean = static_df_list[[i]]$mu, sd = static_df_list[[i]]$stdev)
}
df_list
Я пытаюсь найти решение типа lapply / map / mutate, которое вычисляет по всем фреймам данных - представьте сетку фреймов данных, где цель состоит в том, чтобы вычислять по строкам. Также открыты для других решений, таких как одиночный df с вложенными значениями, но еще не выяснили, как это сделать.
Надеюсь, это ясно - я сделал все возможное!
Спасибо!