首页 > 解决方案 > 数据代词不适用于 dplyr::lst()?

问题描述

library(dplyr)
zone <- c(rep(10,4), rep(20, 4), rep(30, 4))
value <- c(4.5,4.3,4.6, 5,5, rep(3,7)) + round(rnorm(12, sd = 0.1),1)
df <- data.frame(zone, value)
# Works
dplyr::group_by(df, .data$zone) %>% dplyr::summarise(var3 = dplyr::lst(value)) %>% dplyr::ungroup() %>% as.data.frame()
# Error
dplyr::group_by(df, .data$zone) %>% dplyr::summarise(var3 = dplyr::lst(.data$value)) %>% dplyr::ungroup() %>% as.data.frame()

有没有办法来解决这个问题?否则,如果我使用裸名,我会在该值没有可见的全局变量绑定中value收到警告。R CMD checkvalue

标签: rdplyrrlang

解决方案


正如@Jake 所建议的那样,该dplyr::lst()功能处于质疑生命周期阶段。因此,此任务的推荐函数是rlang::list2()

dplyr::group_by(df, .data$zone) %>% dplyr::summarise(var3 = rlang::list2(.data$value)) %>% dplyr::ungroup() %>% as.data.frame()

推荐阅读