我正在一个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