我正在尝试使用感兴趣的包中的函数名称创建一个数据框。我设法通过以下方式做到这一点:
# loading needed libraries
library(ggstatsplot)
library(tidyverse)
# creating a dataframe with namespace from package of interest
(
df_ns <- getNamespaceExports(ns = "ggstatsplot") %>%
tibble::as_data_frame(.) %>%
dplyr::filter(.data = ., grepl("^gg|^grouped", value)) %>%
dplyr::filter(.data = ., value != "ggcoefstats") %>%
dplyr::mutate(
.data = .,
functions = paste("ggstatsplot::", value, sep = "")
) %>%
dplyr::mutate(
.data = .,
version = dplyr::case_when(grepl("^grouped", value) ~ "grouped",
TRUE ~ "basic")
)
)
#> # A tibble: 10 x 3
#> value functions version
#> <chr> <chr> <chr>
#> 1 grouped_gghistostats ggstatsplot::grouped_gghistostats grouped
#> 2 grouped_ggscatterstats ggstatsplot::grouped_ggscatterstats grouped
#> 3 grouped_ggbetweenstats ggstatsplot::grouped_ggbetweenstats grouped
#> 4 grouped_ggcorrmat ggstatsplot::grouped_ggcorrmat grouped
#> 5 grouped_ggpiestats ggstatsplot::grouped_ggpiestats grouped
#> 6 ggbetweenstats ggstatsplot::ggbetweenstats basic
#> 7 ggpiestats ggstatsplot::ggpiestats basic
#> 8 ggcorrmat ggstatsplot::ggcorrmat basic
#> 9 gghistostats ggstatsplot::gghistostats basic
#> 10 ggscatterstats ggstatsplot::ggscatterstats basic
到目前为止,一切都很好。现在我想要的是以下内容:
我想从列grouped_
中的所有名称(前五行,即)中删除value
前缀。但是,当我尝试使用str_split
进行此操作时,将为所有名称分配"gghistostats"
而不是5个不同的名称。我该怎么办?
# stripping `grouped_` prefix from `value` column
df_ns %>%
dplyr::mutate(
.data = .,
value = dplyr::case_when(
grepl("^grouped", value) ~ stringr::str_split(value, "_")[[1]][[2]],
TRUE ~ value
)
)
#> # A tibble: 10 x 3
#> value functions version
#> <chr> <chr> <chr>
#> 1 gghistostats ggstatsplot::grouped_gghistostats grouped
#> 2 gghistostats ggstatsplot::grouped_ggscatterstats grouped
#> 3 gghistostats ggstatsplot::grouped_ggbetweenstats grouped
#> 4 gghistostats ggstatsplot::grouped_ggcorrmat grouped
#> 5 gghistostats ggstatsplot::grouped_ggpiestats grouped
#> 6 ggbetweenstats ggstatsplot::ggbetweenstats basic
#> 7 ggpiestats ggstatsplot::ggpiestats basic
#> 8 ggcorrmat ggstatsplot::ggcorrmat basic
#> 9 gghistostats ggstatsplot::gghistostats basic
#> 10 ggscatterstats ggstatsplot::ggscatterstats basic
由reprex package(v0.2.1)于2018-10-11创建
答案 0 :(得分:1)
尝试使用sub
:
df_ns$value <- sub("^grouped_", "", df_ns$value)
或使用捕获组:
df_ns$value <- sub("^grouped_(.*)", "\\1", df_ns$value, perl=TRUE)
答案 1 :(得分:1)
我们可以使用str_remove
library(stringr)
library(dplyr)
df_ns %>%
mutate(value = str_remove(value, "^grouped_"))