Skip to content

Commit

Permalink
Fix mat/lay numbering for expand_soil_profile()
Browse files Browse the repository at this point in the history
  • Loading branch information
mrustl committed Jul 9, 2024
1 parent f2ae04f commit 4a8c6eb
Showing 1 changed file with 26 additions and 21 deletions.
47 changes: 26 additions & 21 deletions R/extend_soil_profile.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,39 @@
#' @importFrom dplyr arrange bind_rows
#'
extend_soil_profile <- function(df, x_end) {
if(x_end > min(df$x)) {
if(any(x_end == df$x)) {
return(df[which(x_end <= df$x),])
if (x_end > min(df$x)) {
if (any(x_end == df$x)) {
return(df[which(x_end <= df$x), ])
}
} else {
# Original x-Abstand ermitteln
x_diff <- mean(diff(df$x))

# Original x-Abstand ermitteln
x_diff <- mean(diff(df$x))
# Neue x-Werte erstellen basierend auf dem vorgegebenen Endwert für x
new_x <- seq(min(df$x), x_end, by = x_diff)

# Neue x-Werte erstellen basierend auf dem vorgegebenen Endwert für x
new_x <- seq(min(df$x), x_end, by = x_diff)
# Anzahl der neuen x-Werte bestimmen
num_new_rows <- length(new_x)

# Anzahl der neuen x-Werte bestimmen
num_new_rows <- length(new_x)
# Letzte gültige Werte für die Spalten extrahieren
last_vals <- sapply(df, tail, 1)

# Dataframe mit neuen Werten erstellen
new_df <- data.frame(
x = new_x,
node_id = max(df$node_id) + 1:num_new_rows
)
# Dataframe mit neuen Werten erstellen
new_df <- data.frame(
x = new_x,
node_id = max(df$node_id) + 1:num_new_rows
)

# Spalten aus dem ursprünglichen DataFrame übernehmen (in der richtigen Reihenfolge)
for (col in names(df)) {
if (col %in% c("x", "node_id")) next # x und node_id überspringen
new_df[[col]] <- rep(df[[col]], length.out = num_new_rows)
}
# Spalten aus dem ursprünglichen DataFrame übernehmen
for (col in names(df)) {
if (col %in% c("x", "node_id")) next # x und node_id überspringen
new_df[[col]] <- rep(last_vals[[col]], num_new_rows)
}

# Kombinieren und Sortieren der Dataframes
combined_df <- dplyr::bind_rows(df, new_df)
sorted_df <- dplyr::arrange(combined_df, node_id)

return(dplyr::bind_rows(df, new_df) %>%
dplyr::arrange(node_id))
return(sorted_df)
}
}

0 comments on commit 4a8c6eb

Please sign in to comment.