TNC-NMFO / NWLAND

carbon accounting model
0 stars 0 forks source link

solely NM | Error in data.frame() : args imply differing num of rows #161

Open aj1s opened 2 years ago

aj1s commented 2 years ago

'runscript_CALAND_NM_solely85_unc.r' and 'runscript_plot_caland_NM_solely85_unc.r' generate outputs needed for uncertainty bounds and in the req'd dir organization.

However, 'runscript_plot_uncertainty_NM_solely85.r' (7f9191c8854de1bd20e34cb8a66089076d9496b9) returns:

Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 90, 0

It may be that the error is thrown at the first of two attempts (at lines 272 and 310) to combine in_df$Value with the columns of group_df:

group_df <- cbind(group_df,in_df$Value)

It appears that for each varname, group_df is correctly populated with the three respective output csvs (i.e., for mean, low bound, and high bound), as each correctly has 7 variables and 90 obs (i.e., 30 annual obs for each of three ambition-based scenarios). However, there are 0 obs of variable in_df$Value.

sbassett commented 2 years ago

This seems like a lower priority than documentation and producing [mean] output. Moving to milestone 5.

sbassett commented 2 years ago
Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 90, 0

Tracing error back line by line in plot_uncertainty.r

input block:

  start_year = 2021
  end_year = 2050
  varname = "Total_CumCO2eq_all_diff"
  ylabel = "Change from baseline in total cumulative emissions (MMT CO2-eq)"
  file_tag = "_unc"
  data_dir_a = "./outputs/output_co_rcp85"
  figdirs_a = c("mean", "low", "high")
  scenarios_a = c("B_Current_co_rcp85_climNA_output_mean_BC1_NR120", "C_Potential_co_rcp85_climNA_output_mean_BC1_NR120", "D_Maximum_co_rcp85_climNA_output_mean_BC1_NR120")
  scen_labs_a = c("B_Current", "C_Potential", "D_Maximum")
  data_dir_b = NA
 figdirs_b = NA
 scenarios_b = NA
 scen_labs_b = NA
  data_dir_c = NA
 figdirs_c = NA
 scenarios_c = NA
 scen_labs_c = NA
  reg = "All_region"
 lt = "All_land"
 own="All_own"

error in for loop that begins on line 187

> reg_lab
[1] "All_region"
> own_lab
[1] "All_own"
> lt_lab
[1] "All_land"
> g
[1] 1
> f
[1] 2
> fig_lab
[1] "low"
> n
[1] 3
> pre
[1] "D_Maximum_co_rcp85_climNA"
> post
[1] "_BC1_NR120"
> snames_all
character(0)
> in_df
[1] Scenario  Region    Land_Type Ownership Units     Year      Value    
<0 rows> (or 0-length row.names)

in_df on line 267 is empty

sbassett commented 2 years ago

snames becomes empty on line 262 because GREP is looking for "S-" in the scenario names and can't find it.

should there be scenario names with "S-" in snames?

> snames = grep(pre, in_df_pre$Scenario, value = TRUE)
> snames
 [1] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [3] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [5] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [7] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [9] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[11] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[13] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[15] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[17] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[19] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[21] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[23] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[25] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[27] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[29] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
> snames = grep(post, snames, value = TRUE)
> snames
 [1] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [3] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [5] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [7] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [9] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[11] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[13] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[15] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[17] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[19] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[21] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[23] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[25] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[27] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[29] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
> snames = grep("S-", snames, value = TRUE)
> snames
character(0)
sbassett commented 2 years ago

Nevermind, this code wouldn;t be encountered because figdirs[1]!=figdirs[2] as checked on line 254.

sbassett commented 2 years ago

looking from line 272 on

> soil
[1] "D_Maximum_co_rcp85_climNA_output_mean"
> if(regexpr("_S", scenarios[n]) < 0) {soil = "_S=mean"}
> soil
[1] "_S=mean"
> snames = grep(pre, in_df_pre$Scenario, value = TRUE)
> snames
 [1] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [3] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [5] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [7] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [9] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[11] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[13] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[15] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[17] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[19] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[21] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[23] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[25] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[27] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[29] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
> snames = grep(post, snames, value = TRUE)
> snames
 [1] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [3] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [5] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [7] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
 [9] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[11] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[13] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[15] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[17] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[19] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[21] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[23] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[25] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[27] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
[29] "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120" "D_Maximum_co_rcp85_climNA_output_D-sd_A+sd_S+sd_BC1_NR120"
> snames = grep(soil, snames, value = TRUE)
> snames
character(0)

our scenario names may be missing important data that tells the script what to do with the scenarios

> scenarios[n]
[1] "D_Maximum_co_rcp85_climNA_output_mean_BC1_NR120"

because scenarios[n] has no occurrence of "_S" (as checked by line 275), it is then looking for "_S=mean" in "./outputs/output_co_rcp85/low/All_region/All_land/All_own/All_region_All_land_All_own_Total_CumCO2eq_all_diff_output.csv"

sbassett commented 2 years ago

@aj1s this is lowish priority, but does "_S=mean" show up in the CALAND tutorials anywhere? Likely as some form of scenario naming convention?

aj1s commented 2 years ago

@sbassett - Neither "_S=mean" nor "S=mean" appear specifically in any of the tutorials. However, I assume it refers to a case where the CALAND.R argument "value_col_soilcon" is set to '8', by which a run will use the mean soil carbon flux estimate under soil conservation. This is the case with all of our mean CALAND.R runs, whereas with our low and upper bounded CALAND.R runs, this argument was set in the same direction as was that for accumulation (i.e., positive for uptake under a low bounded run, or negative for emissions under a high bounded run).

sbassett commented 2 years ago

Thank you @aj1s! Changing the S=mean to S+ worked! We have uncertainty plots! image

sbassett commented 2 years ago

image

aj1s commented 2 years ago

@sbassett Supernal ! Thanks for birddogging !