Предположим, у меня есть вектор пути к файлу, который я разделил на "/"
и поместил в фрейм данных. Эти пути к файлам имеют различную длину, но в конце дня я хочу, чтобы все базовые имена были выстроены в одном столбце. Ниже я привел пример того, что я имею в виду, и желаемый результат.
library(tidyverse)
dat <- tibble(
V1 = rep("run1", 5),
V2 = rep("ox", 5),
V3 = c("performance.csv", "analysis", "analysis", "performance.csv", "analysis"),
V4 = c("", "rod1", "rod2", "rod3", "performance.csv"),
V5 = c("", "performance.csv", "performance.csv", "performance.csv", "")
)
dat
#> # A tibble: 5 x 5
#> V1 V2 V3 V4 V5
#> <chr> <chr> <chr> <chr> <chr>
#> 1 run1 ox performance.csv "" ""
#> 2 run1 ox analysis rod1 performance.csv
#> 3 run1 ox analysis rod2 performance.csv
#> 4 run1 ox performance.csv rod3 performance.csv
#> 5 run1 ox analysis performance.csv ""
output <- tibble(
V1 = rep("run1", 5),
V2 = rep("ox", 5),
V3 = c("", "analysis", "analysis", "", "analysis"),
V4 = c("", "rod1", "rod1", "rod2", ""),
V5 = c("performance.csv", "performance.csv", "performance.csv", "performance.csv", "performance.csv")
)
output
#> # A tibble: 5 x 5
#> V1 V2 V3 V4 V5
#> <chr> <chr> <chr> <chr> <chr>
#> 1 run1 ox "" "" performance.csv
#> 2 run1 ox analysis rod1 performance.csv
#> 3 run1 ox analysis rod1 performance.csv
#> 4 run1 ox "" rod2 performance.csv
#> 5 run1 ox analysis "" performance.csv
Моя мысль состоит в том, чтобы прибегнуть к циклу for, в котором я проверяю, содержит ли столбец базовое имя, и если да, замените его на ""
и переместите его в последний столбец. У меня проблемы с формированием этой логики, и я знаю, что должен быть лучший способ использовать Tidyverse.