dplyr::mutate 函数可以通过该列的索引修改该列的值吗?

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

例如:

df = data.frame(A=c(1,2), B=c(3,4))
df %>% group_by(A) %>% mutate(.[[2]] = .[[2]] + 1)

此代码将无法运行。

代码:

df %>% group_by(A) %>% mutate(B = .[[2]]+1)

可以运行。所以我想知道是否有办法用 col 的索引替换 'B'(在本例中,它是 2)

r dplyr
1个回答
0
投票

使用

across

> df |> mutate(across(2, ~ .x + 1))
  A B
1 1 4
2 2 5

对于分组数据框,您需要相应地调整索引:

> df |> group_by(A) |> mutate(across(1, ~ .x + 1))
# A tibble: 2 × 2
# Groups:   A [2]
      A     B
  <dbl> <dbl>
1     1     4
2     2     5
© www.soinside.com 2019 - 2024. All rights reserved.