gpt4 book ai didi

r - 使用 `dplyr::mutate()` 从向量中指定的名称创建几个新变量

转载 作者:行者123 更新时间:2023-12-03 20:30:34 24 4
gpt4 key购买 nike

我想在数据框中创建几个新的空变量,在其中指定向量中的变量名称。如果我只指定一个变量名,但会中断多个变量名,则此方法有效。
我尝试了一些以前的解决方案,但在这种情况下它们似乎不起作用,例如:

  • dplyr without hard-coding the variable names
  • Pass a vector with names to mutate to create multiple new columns
  • dplyr - mutate: use dynamic variable names

  • library(dplyr)

    add_columns <- function(df, columns){
    columns <- quo(columns)
    mutate(df, !!columns := NA_character_)
    }

    columns <- c("x", "y")
    iris %>%
    add_columns(columns)

    Error: The LHS of `:=` must be a string or a symbol

    所需的输出是:
    # A tibble: 150 x 7
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species x y
    <dbl> <dbl> <dbl> <dbl> <fct> <chr> <chr>
    1 5.10 3.50 1.40 0.200 setosa NA NA
    2 4.90 3.00 1.40 0.200 setosa NA NA
    3 4.70 3.20 1.30 0.200 setosa NA NA
    4 4.60 3.10 1.50 0.200 setosa NA NA
    5 5.00 3.60 1.40 0.200 setosa NA NA
    6 5.40 3.90 1.70 0.400 setosa NA NA
    7 4.60 3.40 1.40 0.300 setosa NA NA
    8 5.00 3.40 1.50 0.200 setosa NA NA
    9 4.40 2.90 1.40 0.200 setosa NA NA
    10 4.90 3.10 1.50 0.100 setosa NA NA
    # ... with 140 more rows

    我想知道我怎样才能做到这一点?

    最佳答案

    您在这里不需要任何 quosures,因为您没有处理带引号的表达式。只需创建具有适当名称的向量并将它们拼接起来。这里我使用了长度为 1 的向量被回收的事实,但您也可以创建全长向量:

    add_columns <- function(df, columns){
    new <- rep(NA_character_, length(columns))
    names(new) <- columns
    mutate(df, !!!new)
    }

    关于r - 使用 `dplyr::mutate()` 从向量中指定的名称创建几个新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49119794/

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