функция оценки, хранящаяся в столбце данных - PullRequest
0 голосов
/ 11 октября 2018

Я создал фрейм данных с именами функций из интересующего пакета.

# 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")
    ) %>%
    dplyr::mutate(
      .data = .,
      value = stringr::str_remove(value, "grouped_")
    ) %>%
    dplyr::arrange(.data = ., value)
)
#> # A tibble: 10 x 3
#>    value          functions                           version
#>    <chr>          <chr>                               <chr>  
#>  1 ggbetweenstats ggstatsplot::grouped_ggbetweenstats grouped
#>  2 ggbetweenstats ggstatsplot::ggbetweenstats         basic  
#>  3 ggcorrmat      ggstatsplot::grouped_ggcorrmat      grouped
#>  4 ggcorrmat      ggstatsplot::ggcorrmat              basic  
#>  5 gghistostats   ggstatsplot::grouped_gghistostats   grouped
#>  6 gghistostats   ggstatsplot::gghistostats           basic  
#>  7 ggpiestats     ggstatsplot::grouped_ggpiestats     grouped
#>  8 ggpiestats     ggstatsplot::ggpiestats             basic  
#>  9 ggscatterstats ggstatsplot::grouped_ggscatterstats grouped
#> 10 ggscatterstats ggstatsplot::ggscatterstats         basic

Теперь мне нужен столбец, содержащий количество аргументов для каждой функции вfunctions столбец.Это можно сделать для отдельной функции следующим образом:

# example
length(formals(ggstatsplot::ggbetweenstats))
#> [1] 42

Но я хочу сделать это для всех функций, включенных в столбец functions, и создать новый столбец n, который содержит количество аргументов.Но функции не оцениваются должным образом, и я получаю 0 количество аргументов для всех функций.Как мне обойти эту проблему?

# extracting argument count for all functions
purrrlyr::by_row(
  .d = df_ns,
  ..f = ~ length(formals(rlang::parse_expr(.$functions))),
  .collate = "cols",
  .to = "n"
)
#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function

#> Warning in formals(fun): argument is not a function
#> # tibble [10 x 4]
#>    value          functions                           version     n
#>    <chr>          <chr>                               <chr>   <int>
#>  1 ggbetweenstats ggstatsplot::grouped_ggbetweenstats grouped     0
#>  2 ggbetweenstats ggstatsplot::ggbetweenstats         basic       0
#>  3 ggcorrmat      ggstatsplot::grouped_ggcorrmat      grouped     0
#>  4 ggcorrmat      ggstatsplot::ggcorrmat              basic       0
#>  5 gghistostats   ggstatsplot::grouped_gghistostats   grouped     0
#>  6 gghistostats   ggstatsplot::gghistostats           basic       0
#>  7 ggpiestats     ggstatsplot::grouped_ggpiestats     grouped     0
#>  8 ggpiestats     ggstatsplot::ggpiestats             basic       0
#>  9 ggscatterstats ggstatsplot::grouped_ggscatterstats grouped     0
#> 10 ggscatterstats ggstatsplot::ggscatterstats         basic       0

Создано в 2018-10-11 с помощью пакета представитель (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...