R - одно с вектором - PullRequest
1 голос
/ 04 мая 2020

У меня есть этот фрейм данных

source_df <-
  data.frame(
    id = c(seq(1: 3)),
    nr = c(seq(1: 3)),
    ar = c(seq(1: 3)),
    br = c(seq(1: 3)),
    zr = c(seq(1: 3)),
    cn = c("us", "uk", "ca")
  )

Я создал простую функцию для выбора нужных столбцов

selector <-
  function(df, colname) {


    variable <- paste("selected", colname, sep = "_")

    result <-
      df %>% 
      select(
        id,
        one_of(colname)
      ) %>% 
    rename(!!variable := one_of(colname))


    return(result)

  }

Я называю это так.

result <-
  selector(
    df = source_df,
    colname = "nr"
  )

Это работает хорошо, но только если я использую одно имя столбца в качестве ввода colname, как мне улучшить мою функцию, чтобы иметь возможность работать с параметром colname = c ("nr", "zr", "br")?

1 Ответ

1 голос
/ 04 мая 2020

select принимает имена строк в качестве входных данных. Так что вы можете сделать:

library(dplyr)

selector <- function(df, colname) {
  df %>%  select(id, colname) %>% rename_at(vars(-id), ~paste0('selected_', .))
}

selector(source_df, c("nr", "zr"))

#  id selected_nr selected_zr
#1  1           1           1
#2  2           2           2
#3  3           3           3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...