我正在编写一个函数,它使用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])
我们的想法是获取包含变量id
,time
和A
的长格式数据框,该字符存储在对象i
中。但是,获得的数据框的名称是id
,time
,i
。如何进行聚合以评估对象i
并使用其内容?
答案 0 :(得分:0)
只需在表达式
中取消引用变量值z0 %>%
select(c("id", choix[choix$pairs %in% i,1] )) %>%
gather(time,!!i,choix[choix$pairs %in% i,1]