funviewR is an R package that analyzes R source code to detect function definitions and internal dependencies, then visualizes them as interactive network graphs.
- 📊 Analyze R code dependencies - Automatically detect function definitions and calls
- 🔍 Multi-file & directory support - Analyze multiple R files and directories together
- 🤖 Auto-detection - Automatically detects whether paths are files or directories
- 📈 Interactive visualization - Create beautiful dependency graphs with
visNetwork - 🔧 Detailed tooltips - View function arguments, return values, and documentation
- 🎯 Smart layout - Hierarchical graph layout with most-connected nodes centered
⚠️ Duplicate detection - Identify functions defined in multiple files- ⚡ One-line plotting - Quick visualization with
plot_dependency_graph()
You can install the development version from GitHub:
# Install remotes if you don't have it
install.packages("remotes")
# Install funviewR from GitHub
remotes::install_github("deamonpog/funviewR")The easiest way to visualize dependencies:
library(funviewR)
# Analyze files or directories - auto-detects which is which!
plot_dependency_graph(c("R/", "analysis.R", "tests/"))
# Single directory
plot_dependency_graph("R/")
# Specific files
plot_dependency_graph(c("script1.R", "script2.R"))
# With options
plot_dependency_graph("src/",
recursive = TRUE,
include_disconnected = FALSE)For more control and access to analysis data:
library(funviewR)
# Step 1: Analyze files
file_paths <- c("path/to/your/script.R")
dep_info <- analyze_internal_dependencies_multi(file_paths)
# Step 2: Create visualization
plot_interactive_dependency_graph(dep_info)# Get all R files from a directory
files <- get_r_files("R/")
# Get R files recursively
files <- get_r_files("R/", recursive = TRUE)
# Then analyze
dep_info <- analyze_internal_dependencies_multi(files)
graph <- plot_interactive_dependency_graph(dep_info)# Mix files and directories - automatically detected!
plot_dependency_graph(c(
"R/core/",
"main.R",
"R/utils/",
"tests/",
"helpers.R"
), recursive = TRUE)The analyze_internal_dependencies_multi() function returns a list containing:
dependency_map: A list mapping each function to its dependenciesenv: Environment containing all defined functionsall_code_lines: All code lines from analyzed filesfunction_file_map: Maps function names to their source filesduplicates: Lists functions defined in multiple files
# Access the dependency map
dep_info$dependency_map
# Check for duplicate function definitions
if (length(dep_info$duplicates) > 0) {
print("Warning: Duplicate functions found:")
print(dep_info$duplicates)
}The interactive graph provides:
- Blue boxes: Defined functions with full metadata
- Gray ellipses: External or undefined functions
- Arrows: Function call relationships
- Tooltips: Hover over nodes to see:
- Function arguments
- Return values
- Source file
- Documentation (if available)
- R >= 3.5.0
- codetools
- visNetwork
- igraph
- htmltools
- magrittr
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the GNU General Public License v3.0
Chathura Jayalath
- Email: [email protected]
- Built with visNetwork for interactive graph visualization
- Uses R's codetools for dependency analysis
- Leverages igraph for graph algorithms and distance calculations
- Uses htmltools for safe HTML rendering
- Powered by magrittr pipe operator