Передача строки в dplyr в качестве функции? - PullRequest
1 голос
/ 10 апреля 2019

Меня интересует возможность передавать строку не как аргумент внутри функции, а как целую функцию.Возможно, это не самый разумный подход, но мне просто любопытно, чтобы я мог понять функциональность dplyr и то, как R интерпретирует строки.Возможно, я упускаю что-то очень очевидное, но вот мои попытки:

#what i want----
library(dplyr)
mtcars %>% count()

#replicate by passing string as count---
#feed string as a function
my_string = "count()"

#attempt 1
mtcars %>% my_string

#attempt 2
mtcars %>% eval(noquote(my_string))

#neither of the attempts work

Если это невозможно, я понимаю, но было бы интересно, если это возможно, поскольку я могу видеть некоторые приложения для этого в своем уме.

РЕДАКТИРОВАТЬ

Еще немного, чтобы объяснить, почему я хочу это сделать.Некоторое время я работал с файлами fst для некоторых очень больших данных и загружал данные в свою среду, например, часто выполняя операции с одним файлом одновременно и параллельно, что очень эффективно для моих целей:

#pseudo code---
seq.Date(1,2,by = "days") %>%
pblapply(function(x){
read.fst(list.files(as.character(x), as.data.table = T) %>%

#this portion turn into a string----    
group_by(foo) %>%
        count()
#------------------------------
        }) %>% rbindlist()


#application-------
my_string = "group_by(foo) %>%
            count()"

  seq.Date(1,2,by = "days") %>%
    pblapply(function(x){
    read.fst(list.files(as.character(x), as.data.table = T) %>% my_string
}) %>% rbindlist()

Я чаще использую таблицу данных, но я думаю, что dplyr может быть лучше для этой конкретной задачи, которая меня интересует.То, что я хочу сделать, это отдельно записать весь конвейер в виде строки и затем передать его.Это позволит мне выписать пакет библиотеки, чтобы сократить рабочий процесс.Что-то на этот счет.

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