Profit sensitivity analysis in base R
The main thing to note is that your profit function only uses vectorized functions (- and *) so it is vectorized with respect to its four inputs. This means that you do not have to create loops; instead you can just feed the functions with vector(s): one vector for the variable that you are shocking, and scalars for the other three fixed inputs. Here is my suggested rewrite, having put everything into a function:

biz_sens_analysis &lt;- function(Price      = 10,
                              Var_Cost   = 5,
                              Units      = 100000,
                              Fixed_Cost = 10000) {

  Max_Change &lt;- 0.1
  Changes &lt;- seq(-Max_Change, Max_Change, by = 0.01)
  shock &lt;- function(x) x * (1 + Changes)

  # Define profit function
  Profit &lt;- function(Price, Var_Cost, Units, Fixed_Cost)
     (Price - Var_Cost) * Units - Fixed_Cost

  # Calculating base and updated profit
  Start_Profit &lt;- Profit(Price, Var_Cost, Units, Fixed_Cost)

  Profit_New_Price       &lt;- Profit(shock(Price), Var_Cost, Units, Fixed_Cost)
  Profit_New_Var_Cost    &lt;- Profit(Price, shock(Var_Cost), Units, Fixed_Cost)
  Profit_New_Unit_Sales  &lt;- Profit(Price, Var_Cost, shock(Units), Fixed_Cost)
  Profit_New_Fixed_Costs &lt;- Profit(Price, Var_Cost, Units, shock(Fixed_Cost))

  diff_px &lt;- function(px) px - Start_Profit
  Diff_Profit_New_Price       &lt;- diff_px(Profit_New_Price) 
  Diff_Profit_New_Var_Cost    &lt;- diff_px(Profit_New_Var_Cost)
  Diff_Profit_New_Unit_Sales  &lt;- diff_px(Profit_New_Unit_Sales)
  Diff_Profit_New_Fixed_Costs &lt;- diff_px(Profit_New_Fixed_Costs)

  # Plot the profit sensitivities
  options(scipen = 999) # Remove scientific notation from the chart axes

  fmt &lt;- function(x) format(x, big.mark=",", scientific = FALSE)
  msg &lt;- paste("Starting Business Conditions: Price = £", fmt(Price),
             ", Variable Cost = £",    fmt(Var_Cost),
             ", Unit Sales = ",        fmt(Units),
             ", Fixed Costs = £",      fmt(Fixed_Cost),
             ", Giving a Profit of £", fmt(Start_Profit))

  plot(100 * Changes, Diff_Profit_New_Price,
     xlab = "Change in Dependent Variable (%)",
     ylab = "Change in Profit (£)",
     main = "Profit Sensitivity Analysis of Changing One Variable at a Time, Assuming no Interaction Among Dependent Variables",
     type = "l",
     sub  = msg)

  lines(100 * Changes, Diff_Profit_New_Var_Cost,    col = "red")
  lines(100 * Changes, Diff_Profit_New_Unit_Sales,  col = "blue")
  lines(100 * Changes, Diff_Profit_New_Fixed_Costs, col = "green")

  # Building legend
  Leg_Names &lt;- c("Price Change", "Variable Cost Change", "Unit Sales Change", "Fixed Costs Change")
  legend("bottomright",
         legend = Leg_Names,
         col    = c("black", "red", "blue", "green"),
         pch    = 15,
         bty    = "n")
}

biz_sens_analysis()


Hope it helps. Let me know if you have questions.