Как создать функцию, которая добавляет разные категории в таблицу с Tidyverse в R - PullRequest
0 голосов
/ 11 апреля 2020

Я создаю много тиблей. Тем не менее, потому что это повторяется, я пытаюсь создать функцию, которая облегчает мою работу. Необходимо создать эту функцию с библиотекой tidyverse в R. Это созданная функция:

cfg_write <- function(given = c(1:2), 
                              common = c(1:2), 
                              table = name_of_a_table, 
                              path = "path/to/save"){

        table <- tibble::tibble(given = c(1:2),
                                common = c(1:2))
        table 

        saveRDS(table, file = path)

    }

Принимая во внимание, что в заданных и общих параметрах функции я хочу передать более 2 строк, иногда я могу достичь 18 уровней, а не 2, как это установлено в «данных» и «общих».

Две вещи, которые я не получаю с созданной функцией:

  1. I wi sh Я получу дополнительные строки, когда передам заданные и общие параметры. Это категории данной переменной.
  2. А во-вторых, когда я пытаюсь создать несколько столбцов, я получаю столбик с двумя столбцами, что хорошо, и каждый столбец имеет число 1 и 2, что не соответствует ожиданиям.

Это то, что я делаю, чтобы быть более точным c:

test <- cfg_write(given = c('Adrian', "Mary", "Neil"), 
                   common = c("name1", "name2", "name3"), 
                   table = test, path = "/users/bg/test.rds")

Однако я получаю это:

dput(test)
structure(list(given = 1:2, common = 1:2), row.names = c(NA,-2L), class = c("tbl_df", "tbl", "data.frame"))

Может кто-то помочь ?

1 Ответ

0 голосов
/ 11 апреля 2020

Вы не передали имена аргументов в тело функции. Поскольку вы не использовали эти аргументы в теле функции, любые новые аргументы, предоставленные при использовании функции, будут игнорироваться. Аргумент таблицы также устарел, поскольку имя tibble будет таким, каким вы назначаете вызов функции, в данном случае test. Возможно, это будет двигаться в правильном направлении? Примечание. Я изменил путь к файлу

cfg_write <- function(given = c(1:2), 
                              common = c(1:2),
                              path = "path/to/save"){

        table <- tibble::tibble(given = given,
                                common = common)

        saveRDS(table, file = path)

    }

test <- cfg_write(given = c('Adrian', "Mary", "Neil"), 
                  common = c("name1", "name2", "name3"), 
                  table = test, path = "Desktop/test.rds")
readRDS("Desktop/test.rds")

  provided standard
  <chr>    <chr>   
1 Adrian   name1   
2 Mary     name2   
3 Neil     name3 


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