gpt4 book ai didi

r - mutate_at 未应用于所有选定的列

转载 作者:行者123 更新时间:2023-12-04 12:36:37 25 4
gpt4 key购买 nike

我试图从所有其他列中减去一列,但并非所有列都被修改。

test <- tibble(a = 1:3, b = 2:4, c = 3:5, d = 4:6, e = 5:7)

col = 'd'
test %>% mutate_at(vars(-a), funs(. - !!as.name(col)))

a b c d e
<int> <int> <int> <int> <int>
1 1 -2 -1 0 5
2 2 -2 -1 0 6
3 3 -2 -1 0 7

我不确定为什么该函数未应用于 e 列。函数似乎只适用于我用来减去的列

col = 'b'
test %>% mutate_at(vars(-a), funs(. - !!as.name(col)))

a b c d e
<int> <int> <int> <int> <int>
1 1 0 3 4 5
2 2 0 4 5 6
3 3 0 5 6 7

当我使用“list”而不是“funs”时,我得到了相同的行为(尽管我还没有弄清楚如何在“list”中使用动态变量名)

test %>% mutate_at(vars(-a), list(~. - b))
a b c d e
<int> <int> <int> <int> <int>
1 1 0 3 4 5
2 2 0 4 5 6
3 3 0 5 6 7

如果我在这里做错了什么,请告诉我。

最佳答案

我认为最好的方法是先提取您想要的值,然后应用减法。

library(tidyverse)

col = 'd'
vals <- pull(test, {{col}})

test %>% mutate_at(vars(-a), list(~.-vals))
#> # A tibble: 3 x 5
#> a b c d e
#> <int> <int> <int> <int> <int>
#> 1 1 -2 -1 0 1
#> 2 2 -2 -1 0 1
#> 3 3 -2 -1 0 1

关于r - mutate_at 未应用于所有选定的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com