Skip to content

Commit 4a8c6eb

Browse files
committed
Fix mat/lay numbering for expand_soil_profile()
1 parent f2ae04f commit 4a8c6eb

File tree

1 file changed

+26
-21
lines changed

1 file changed

+26
-21
lines changed

R/extend_soil_profile.R

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,39 @@
1010
#' @importFrom dplyr arrange bind_rows
1111
#'
1212
extend_soil_profile <- function(df, x_end) {
13-
if(x_end > min(df$x)) {
14-
if(any(x_end == df$x)) {
15-
return(df[which(x_end <= df$x),])
13+
if (x_end > min(df$x)) {
14+
if (any(x_end == df$x)) {
15+
return(df[which(x_end <= df$x), ])
1616
}
1717
} else {
18+
# Original x-Abstand ermitteln
19+
x_diff <- mean(diff(df$x))
1820

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

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

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

28-
# Dataframe mit neuen Werten erstellen
29-
new_df <- data.frame(
30-
x = new_x,
31-
node_id = max(df$node_id) + 1:num_new_rows
32-
)
30+
# Dataframe mit neuen Werten erstellen
31+
new_df <- data.frame(
32+
x = new_x,
33+
node_id = max(df$node_id) + 1:num_new_rows
34+
)
3335

34-
# Spalten aus dem ursprünglichen DataFrame übernehmen (in der richtigen Reihenfolge)
35-
for (col in names(df)) {
36-
if (col %in% c("x", "node_id")) next # x und node_id überspringen
37-
new_df[[col]] <- rep(df[[col]], length.out = num_new_rows)
38-
}
36+
# Spalten aus dem ursprünglichen DataFrame übernehmen
37+
for (col in names(df)) {
38+
if (col %in% c("x", "node_id")) next # x und node_id überspringen
39+
new_df[[col]] <- rep(last_vals[[col]], num_new_rows)
40+
}
41+
42+
# Kombinieren und Sortieren der Dataframes
43+
combined_df <- dplyr::bind_rows(df, new_df)
44+
sorted_df <- dplyr::arrange(combined_df, node_id)
3945

40-
return(dplyr::bind_rows(df, new_df) %>%
41-
dplyr::arrange(node_id))
46+
return(sorted_df)
4247
}
4348
}

0 commit comments

Comments
 (0)