Меня интересует возможность передавать строку не как аргумент внутри функции, а как целую функцию.Возможно, это не самый разумный подход, но мне просто любопытно, чтобы я мог понять функциональность 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 может быть лучше для этой конкретной задачи, которая меня интересует.То, что я хочу сделать, это отдельно записать весь конвейер в виде строки и затем передать его.Это позволит мне выписать пакет библиотеки, чтобы сократить рабочий процесс.Что-то на этот счет.