🤖 AI Summary
This work addresses the lack of static guarantees on data frame shapes in R, which hinders reliable structural reasoning in programs. It introduces the first application of abstract interpretation to R data frame shape analysis by constructing a reduced product abstract domain based on column names and dimensions (number of rows and columns). Precise abstract semantics are defined for common operations such as mutate, filter, and subset. Evaluation on 78 real-world scripts demonstrates that the approach successfully infers concrete shape constraints for 42.1% of the 33,314 analyzed operations and uncovers 40 potential invalid column accesses, substantially enhancing the reliability of data flow in R programs.
📝 Abstract
Data frames are a fundamental data structure in many data analysis tasks and are widely used in programming languages like R. Due to their omnipresence in data analysis, there are many functions that operate on their shape and content, for example, to clean and transform study data. However, languages like R do not offer static guarantees on data frames making it difficult to reason about their shape at a specific point in the program.
In this paper, we present a novel static analysis to infer the shape of data frames in R programs using abstract interpretation by tracking the ensured and potential column names, as well as the potential number of columns and rows. For this, we use a reduced product domain and define abstract semantics for the most commonly used data frame operations, such as mutating, filtering, and subsetting. We evaluate the correctness and accuracy of our analysis on a selection of 78 executable real-world R scripts achieving empirical evidence for soundness by never under-approximating the data frame shape. Additionally, we demonstrate the ability of our analysis to infer the shape of data frames on a large dataset of 33,314 real-world R scripts by inferring concrete shape constraints for 42.1 % and exact shapes for 0.9 % of the data frame operations, improving to 58.7 % and 4.2 % if all datasets read in these scripts are available to our analysis. Using the inferred data frame shapes, we identified 40 real-world R scripts containing potential invalid data frame accesses. This shows the potential of our analysis to significantly support researchers in using data frames in data analysis.