【问题标题】:tidyr::expand get names of tibble as variables to expand?tidyr::expand 获取小标题的名称作为要扩展的变量?
【发布时间】:2019-01-11 02:57:41
【问题描述】:

我正在寻找更通用的 data.frame (table 或 tibble) 扩展。该代码将更好地解释我的意思。这是我将 dt 扩展为 meansd 列的时候。

dt <- tibble::tibble(
  mean = c(10,20,30),
  sd = c(1,2,3),
  median = c(3,4,5)
) 
dt %>% tidyr::expand(., mean, sd)

我正在搜索更通用的东西,比如这个,它不起作用:

dt %>% tidyr::expand(., list("mean", "sd"))

即使我可以指定更复杂的扩展逻辑(也不起作用):

exp.cols <- dt %>% names(.) %>% .[stringr::str_detect(., "d")]
dt %>% tidyr::expand(., exp.cols)

数据可能来自外部,因此无法过滤然后在所有列上展开。

【问题讨论】:

  • 用 syms 包裹起来 dt %&gt;% tidyr::expand(., !!! rlang::syms(list("mean", "sd")))

标签: r dplyr tidyverse tidyr


【解决方案1】:

一种选择是转换为符号 (syms) 并计算 (!!)

library(dplyr)
dt %>% 
  tidyr::expand(!!! rlang::syms(list("mean", "sd")))

或者使用列名

dt %>% 
  tidyr::expand(!!! rlang::syms(names(.)[1:2]))
# A tibble: 9 x 2
#   mean    sd
#  <dbl> <dbl>
#1    10     1
#2    10     2
#3    10     3
#4    20     1
#5    20     2
#6    20     3
#7    30     1
#8    30     2
#9    30     3

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多