gpt4 book ai didi

r - mutate_at 在 R 中使用 lambda 函数?

转载 作者:行者123 更新时间:2023-12-05 00:48:07 24 4
gpt4 key购买 nike

我有一个包含 100 列的数据框。每列代表一个概率值。

我想在那里进行缩放,我正在使用以下转换:

df <- df %>%
mutate_at(vars(specific_columns),
funs(function(x) {((x - min(x)) / (max(x) - min(x)))}))

但它不起作用,也不会产生我想要的输出。

例如样本数据是:
col1        col2        col3        col4        col5        
0.014492754 0.014492754 0.014492754 0.014492754 0.014492754
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000
0.028985507 0.028985507 0.028985507 0.028985507 0.028985507
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000
0.014492754 0.014492754 0.014492754 0.014492754 0.014492754
0.014492754 0.014492754 0.014492754 0.014492754 0.014492754
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000
0.010989011 0.010989011 0.010989011 0.010989011 0.010989011
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000

错误:

Error in mutate_impl(.data, dots) : Column col1 is of unsupported type function

最佳答案

试试这个语法:

library(dplyr)
df %>% mutate_at(vars(everything()), funs(((. - min(.)) / (max(.) - min(.)))))
#> col1 col2 col3 col4 col5
#> 1 0.5000000 0.5000000 0.5000000 0.5000000 0.5000000
#> 2 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 3 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 4 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
#> 5 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 6 0.5000000 0.5000000 0.5000000 0.5000000 0.5000000
#> 7 0.5000000 0.5000000 0.5000000 0.5000000 0.5000000
#> 8 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 9 0.3791209 0.3791209 0.3791209 0.3791209 0.3791209
#> 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
funs()将为您解释一个伪函数。它有助于处理两种情况,否则将无法正常工作:
  • 函数的字符名称(例如“mean”)
  • 使用 调用函数。作为虚拟参数(如在我的示例中)

  • 如果您已经声明了自己的(匿名)函数,则无需使用 funs()mutate_at()将按原样接受:

    mutate_at(df, vars(everything()), function(x) {((x - min(x)) / (max(x) - min(x)))})

    或者

    my_func <- function(x) {((x - min(x)) / (max(x) - min(x)))}
    mutate_at(df, vars(everything()), my_func)

    关于r - mutate_at 在 R 中使用 lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50313713/

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