将字符向量中编码为字符串的变量扩展为符号

问题描述 投票:0回答:1

假设我有一个数据框,并且想要计算两个随机列的总和。

我尝试过:

df <- data.frame(a=seq(1,3),b=seq(4,6),c=seq(7,9))
vars <- sample(letters[1:3],2)
df %>% rowwise() %>% mutate(s=sum({{vars}}))

但我明白:

> df %>% rowwise() %>% mutate(s=sum({{vars}}))
Error in `.fun()`:
ℹ In argument: `s = sum(c("c", "b"))`.
ℹ In row 1.
Caused by error in `sum()`:
! invalid 'type' (character) of argument
Run `rlang::last_trace()` to see where the error occurred.

因为,虽然向量被展开了,但是它里面的字符串并没有转换成符号。

什么是 tidyverse 方法来做到这一点?

r tidyverse
1个回答
0
投票

你可以这样做:

df |>
    rowwise() |>
    mutate(
        s = sum(c_across(all_of(vars)))
    )
# A tibble: 3 × 4
# Rowwise: 
#       a     b     c     s
#   <int> <int> <int> <int>
# 1     1     4     7     8
# 2     2     5     8    10
# 3     3     6     9    12
© www.soinside.com 2019 - 2024. All rights reserved.