Issue
Given three lists of lists (avg_errors
, year_months
, dfs
) as follows:
avg_errors <- list(0.7, 0.92, 2.35)
Out:
[[1]]
[1] 0.7
[[2]]
[1] 0.92
[[3]]
[1] 2.35
and:
year_months <- list(list('2021-12'), list('2021-11'), list('2021-10'))
and data dfs
:
dfs <- list(structure(list(id = c("M01", "M02", "S01"), `2021-10(actual)` = c(8.9,
15.7, 5.3), `2021-11(actual)` = c(7.3, 14.8, 3.1), `2021-12(actual)` = c(6.1,
14.2, 3.5), `2021-12(pred)` = c(6.113631596, 14.16243166, 3.288372517
), `2021-12(error)` = c(0.719846116, 0.154463985, 1.225992602
), mean_col = c(7.43333333333333, 14.9, 3.96666666666667), act_direction = c(-1.2,
-0.600000000000001, 0.4), pred_direction = c(-1.186368404, -0.637568340000001,
0.188372517)), row.names = c(NA, -3L), class = "data.frame"),
structure(list(id = c("M01", "M02", "S01"), `2021-09(actual)` = c(10.3,
17.3, 6.4), `2021-10(actual)` = c(8.9, 15.7, 5.3), `2021-11(actual)` = c(7.3,
14.8, 3.1), `2021-11(pred)` = c(8.352097939, 13.97318204,
3.164682627), `2021-11(error)` = c(1.998109138, 0.414373304,
0.342072615), mean_col = c(8.83333333333333, 15.9333333333333,
4.93333333333333), act_direction = c(-1.6, -0.899999999999999,
-2.2), pred_direction = c(-0.547902061, -1.72681796, -2.135317373
)), row.names = c(NA, -3L), class = "data.frame"), structure(list(
id = c("M01", "M02", "S01"), `2021-08(actual)` = c(12.6,
19.2, 8.3), `2021-09(actual)` = c(10.3, 17.3, 6.4), `2021-10(actual)` = c(8.9,
15.7, 5.3), `2021-10(pred)` = c(9.619846116, 15.54553601,
6.525992602), `2021-10(error)` = c(0.945567783, 4.883250027,
1.215819585), mean_col = c(10.6, 17.4, 6.66666666666667
), act_direction = c(-1.4, -1.6, -1.1), pred_direction = c(-0.680153884000001,
-1.75446399, 0.125992601999999)), row.names = c(NA, -3L
), class = "data.frame"))
How could I pass these variables as arguments to the function Plotting()
as follows:
library(gt)
library(tidyverse)
Plotting <- function(data, year_months, errors){
for (current_month in year_months){
for (avg_error in errors){
p <- data %>%
gt() %>%
tab_header(
title = gt::html(glue("<span style='color:red'>data for {current_month}</span>")),
subtitle = md(paste0("The average error for this month is: <em>", avg_error, '</em>.'))
)
return (p)
}
}
}
mapply(Plotting, dfs, year_months, errors)
The current code gives me: Error in (function (data, errors) : argument no use (dots[[3]][[1]])
.
How could call the function and pass arguments? Thanks for your help at advance.
Solution
I'm not sure if this is your desired outcome, but my guess is, that you don't need the for-loop's inside the Plotting
function, since your are already looping over your input with mapply
.
library(gt)
library(tidyverse)
library(glue)
Plotting <- function(data, year_months, errors){
p <- data %>%
gt() %>%
tab_header(
title = gt::html(glue("<span style='color:red'>data for {year_months}</span>")),
subtitle = md(paste0("The average error for this month is: <em>", errors, '</em>.'))
)
print(p)
}
mapply(Plotting, dfs, year_months, avg_errors)
Created on 2022-01-23 by the reprex package (v0.3.0)
Answered By - TimTeaFan Answer Checked By - Timothy Miller (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.