Pull cur_column() from across()
This commit is contained in:
@@ -789,43 +789,39 @@ filter_and_print_non_finite <- function(df, vars_to_check, print_vars) {
|
|||||||
|
|
||||||
filter_data_for_plots <- function(df, variables, missing = TRUE, limits_map = NULL) {
|
filter_data_for_plots <- function(df, variables, missing = TRUE, limits_map = NULL) {
|
||||||
|
|
||||||
# Initialize lists to store lm lines
|
# Print missing data and out-of-range data separately
|
||||||
lm_lines <- list()
|
|
||||||
|
|
||||||
# Check for missing and out-of-range data
|
|
||||||
for (variable in variables) {
|
for (variable in variables) {
|
||||||
y_var_sym <- sym(variable)
|
y_var_sym <- sym(variable)
|
||||||
|
|
||||||
# Print missing data if requested
|
|
||||||
if (missing) {
|
if (missing) {
|
||||||
missing_data <- df %>% filter(is.na(!!y_var_sym))
|
missing_data <- df %>% filter(is.na(!!y_var_sym))
|
||||||
if (nrow(missing_data) > 0) {
|
if (nrow(missing_data) > 0) {
|
||||||
message("Filtering missing data for variable ", variable, " for plotting:")
|
message("Missing data for variable ", variable, ":")
|
||||||
print(head(missing_data, 10)) # Print only the first 10 rows to avoid too much output
|
print(missing_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Print out-of-range data if limits_map is provided
|
|
||||||
if (!is.null(limits_map)) {
|
if (!is.null(limits_map)) {
|
||||||
|
# Get y-limits for the variable
|
||||||
ylim_vals <- limits_map[[variable]]
|
ylim_vals <- limits_map[[variable]]
|
||||||
|
|
||||||
|
# Identify out-of-range data and print it
|
||||||
out_of_range_data <- df %>% filter(
|
out_of_range_data <- df %>% filter(
|
||||||
!is.na(!!y_var_sym) &
|
!is.na(!!y_var_sym) &
|
||||||
(!!y_var_sym < min(ylim_vals, na.rm = TRUE) | !!y_var_sym > max(ylim_vals, na.rm = TRUE))
|
(!!y_var_sym < min(ylim_vals, na.rm = TRUE) | !!y_var_sym > max(ylim_vals, na.rm = TRUE))
|
||||||
)
|
)
|
||||||
if (nrow(out_of_range_data) > 0) {
|
if (nrow(out_of_range_data) > 0) {
|
||||||
message("Filtering out-of-range data for variable ", variable, " for plotting:")
|
message("Out-of-range data for variable ", variable, ":")
|
||||||
print(head(out_of_range_data, 10)) # Print only the first 10 rows
|
print(out_of_range_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Apply filtering across all variables in one step using if_any and if_all
|
# Filter data by checking if all variables are within the specified limits
|
||||||
if (!is.null(limits_map)) {
|
if (!is.null(limits_map)) {
|
||||||
df_filtered <- df %>%
|
df_filtered <- df %>%
|
||||||
filter(if_all(all_of(variables), ~ !is.na(.))) %>%
|
filter(if_all(all_of(variables), ~ !is.na(.))) %>% # Check for non-NA values
|
||||||
filter(if_all(all_of(variables),
|
filter(if_all(all_of(variables), ~ . >= limits_map[[cur_column()]][1] & . <= limits_map[[cur_column()]][2]))
|
||||||
~ between(., limits_map[[cur_column()]][1], limits_map[[cur_column()]][2])
|
|
||||||
))
|
|
||||||
} else {
|
} else {
|
||||||
df_filtered <- df %>% filter(if_all(all_of(variables), ~ !is.na(.)))
|
df_filtered <- df %>% filter(if_all(all_of(variables), ~ !is.na(.)))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user