我对传递字符串而不是将其作为函数中的参数而是作为整个函数进行传递的能力感兴趣。这可能不是最聪明的方法,但我只是很好奇,因此我可以理解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可能对我感兴趣的特定任务更好。我想要做的是将整个管道分别写为一个字符串,然后传递它。这将允许我写出一个库包来缩短我的工作流程。那种效果。