r语言 - 在 'dplyr' 中操作动态创建的变量名称



我正在一个lapply表达式中创建一组tibbles,稍后将合并。我需要动态创建变量名称。按照这个问题和这个问题中的建议,我创建这个最小的例子:

library(tidyverse)
name_v1 <- "first_variable"
name_v2 <- "second_variable"
name_v3 <- "third_variable"
tibble(
!!name_v1 := c(1, 2),
!!name_v2 := c(3, 4)
)

这显然给出了所需的输出。但是,我需要使用这两个变量创建第三个变量。由于我不"知道"这些变量的名称,因此我需要引用动态创建的变量。我试过了:

tibble(
!!name_v1 := c(1, 2),
!!name_v2 := c(3, 4),
!!name_v3 := !!name_v1 / !!name_v2
)
tibble(
!!name_v1 := c(1, 2),
!!name_v2 := c(3, 4)
) %>%
mutate(
!!name_v3 := !!name_v1 / !!name_v2
)

tibble(
!!name_v1 := c(1, 2),
!!name_v2 := c(3, 4),
!!name_v3 := name_v1 / name_v2
)

但是这三个都给出了错误消息。如何访问和操作这些新创建的变量?

你需要sym

tibble(
!!name_v1 := c(1, 2),
!!name_v2 := c(3, 4),
!!name_v3 := !!sym(name_v1) / !!sym(name_v2))
)
# A tibble: 2 x 3
#   first_variable second_variable third_variable
#            <dbl>           <dbl>          <dbl>
# 1              1               3          0.333
# 2              2               4          0.5  

最新更新