评估聚集函数内的对象,tidyr,R

时间:2018-01-15 15:20:57

标签: r dplyr tidyr

我正在编写一个函数,它使用gather从宽格式数据帧转换为长格式数据帧。这是我想要做的一个例子:

library(tidyr)
library(dplyr)

###simulated data
z0 <- data.frame(id = 1:10, 
                 A.pre = rnorm(10), 
                 B.pre = rnorm(10), 
                 A.Post = rnorm(10), 
                 B.Post = rnorm(10))

####data.frame with info about variables in z0
choix <- data.frame(var = colnames(z0), 
                    pairs = c(NA, "A", "B", "A", "B"), 
                    stringsAsFactors = F)

i <- "A"

z0 %>% 
    select(c("id", choix[choix$pairs %in% i, 1] )) %>%
    gather(time, i, choix[choix$pairs %in% i, 1])

我们的想法是获取包含变量idtimeA的长格式数据框,该字符存储在对象i中。但是,获得的数据框的名称是idtimei。如何进行聚合以评估对象i并使用其内容?

1 个答案:

答案 0 :(得分:0)

只需在表达式

中取消引用变量值
z0 %>% 
  select(c("id", choix[choix$pairs %in% i,1] )) %>%
  gather(time,!!i,choix[choix$pairs %in% i,1]