Imported data should expose the fields that downstream code expects.

Program

Play the script to choose the imported third column and see whether the schema check passes.

column_names.R
expected <- c("id", "score", "group")
actual <- c("id", "score", "grp")
rename_choice <- 
replacement <- c("team", "group", "group_id")[rename_choice]
actual[3] <- replacement
missing <- setdiff(expected, actual)
extra <- setdiff(actual, expected)
label <- paste(length(missing), length(extra), sep = ":")
cat(label, "\n", sep = "")
expected <- c("id", "score", "group")
actual <- c("id", "score", "grp")
rename_choice <- 
replacement <- c("team", "group", "group_id")[rename_choice]
actual[3] <- replacement
missing <- setdiff(expected, actual)
extra <- setdiff(actual, expected)
label <- paste(length(missing), length(extra), sep = ":")
cat(label, "\n", sep = "")
expected <- c("id", "score", "group")
actual <- c("id", "score", "grp")
rename_choice <- 
replacement <- c("team", "group", "group_id")[rename_choice]
actual[3] <- replacement
missing <- setdiff(expected, actual)
extra <- setdiff(actual, expected)
label <- paste(length(missing), length(extra), sep = ":")
cat(label, "\n", sep = "")
expected fields A schema check starts from the columns later code requires.
missing fields `setdiff(expected, actual)` finds required columns that did not arrive.
extra fields `setdiff(actual, expected)` finds unexpected columns to review.