【问题标题】:evaluating objects inside gather function, tidyr, R评估聚集函数、tidyr、R 中的对象
【发布时间】:2018-01-15 15:20:57
【问题描述】:

我正在编写一个函数,它使用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并使用其内容?

【问题讨论】:

  • 对不起,我不会再这样做了

标签: r dplyr tidyr


【解决方案1】:

只需取消引用表达式中的变量值

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

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 2020-04-28
    • 2014-07-27
    • 1970-01-01
    • 2013-08-31
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多