gpt4 book ai didi

r - 无法使用 R 将 Inf 替换为 dplyr 链中的自定义值

转载 作者:行者123 更新时间:2023-12-03 08:37:47 26 4
gpt4 key购买 nike

我有一个如下所示的数据框

  identifier shift_back_max shift_forward_max
<chr> <dbl> <dbl>
1 11 -140 0
2 12 -63 149
3 13 -37 327
4 14 0 193
5 16 -Inf Inf
6 17 -Inf Inf
7 18 -Inf Inf
8 19 -Inf Inf

我正在尝试将 -inf 替换为 -30,将 Inf 替换为 30

我在方法时尝试了以下情况。请注意,此案例是大型 dplyr 链的一部分。但只有这一行会引发错误。因此,我在这里将其提供为一栏

mutate(shift_back_max= case_when(
(!is.na(shift_back_max)|!is.infinite(shift_back_max) ~'-30',
TRUE ~ shift_back_max))

但是,我收到以下错误消息

Error: Problem with `mutate()` input `shift_back_max`.
x 'from' must be a finite number
i Input `shift_back_max` is `case_when(...)`.
i The error occurred in row 5.
Run `rlang::last_error()` to see where the error occurred.
In addition: Warning messages:
1: In min(shift_back_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
2: In min(shift_back_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
3: In min(shift_back_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
4: In min(shift_back_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
5: In min(shift_forward_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
6: In min(shift_forward_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
7: In min(shift_forward_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf
8: In min(shift_forward_max, na.rm = TRUE) :
no non-missing arguments to min; returning Inf

我希望我的输出如下所示

 identifier shift_back_max shift_forward_max
<chr> <dbl> <dbl>
1 11 -140 0
2 12 -63 149
3 13 -37 327
4 14 0 193
5 16 -30 30
6 17 -30 30
7 18 -30 30
8 19 -30 30

最佳答案

您可以使用 ifelse() 测试某个值是否为无穷大,然后在为 TRUE 时将其符号乘以 30:

library(dplyr)

dat %>%
mutate(across(starts_with("shift"), ~ ifelse(is.infinite(.x), 30 * sign(.x), .x)))

identifier shift_back_max shift_forward_max
1 11 -140 0
2 12 -63 149
3 13 -37 327
4 14 0 193
5 16 -30 30
6 17 -30 30
7 18 -30 30
8 19 -30 30

关于r - 无法使用 R 将 Inf 替换为 dplyr 链中的自定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63378591/

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