我正在寻找更通用的data.frame扩展(表或小标题)。该代码将更好地解释我的意思。这是我按mean
和sd
列扩展dt的时间。
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)
数据可能来自外部位置,因此没有选项可以过滤然后在所有列上进行扩展。
答案 0 :(得分: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