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

标签 r dataframe dplyr scaling

我有一个包含 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/

    相关文章:

    python - Pandas 在 python Pandas 数据框中获取两行之间交集的方法

    python - 将列附加到数据框右侧

    python - 将引用字典与字典列表相匹配

    在 R 中重新编码除一个变量之外的所有变量

    r - 使用 left_join 合并两个数据帧会在 'right' 列中产生 NA

    r - 如何在 R 和 ggplot2 中的背景图像上拟合绘图

    r - Shiny:如何使用默认值初始化 react 值

    mysql - 如何使用 MySQL 或 R 获取 JSON 是否包含特定文本

    R将传统情节和ggplot2放在一起

    debugging - 没有抛出错误的错误