首页 > 解决方案 > 用户定义的函数来产生选定变量的唯一值

问题描述

我编写了一个简单的用户函数来生成给定列的唯一值,如下所示:

 > get.values <- function(df, colNamestr) {
      df %>%
      select(colNamestr) %>%
      distinct()
 }

样本数据如下:

myData <- data.frame(
    variable1 = c("cat", "cat", "dog"), 
    variable2 = c("yes", "no", "maybe"),
    variable3 = c("yellow", "yellow", "white")
)

当我按如下方式运行该函数时:

get.values(myData, 'variable1') ... result is:
  variable1
1       cat
2       dog

我想扩展这个函数,以便我可以一次调用多个列名(大约 15 个)(我的实际数据有 2000 列),并输出一个包含变量的所有唯一值的数据框,例如这个。

get.values(myData, c('variable1', 'variable2', 'variable3')
     variable1  variable2 variable3
    1       cat  yes      yellow
    2       dog  no       white
    3            maybe

任何建议将不胜感激!!!

标签: rdplyruser-defined-functionstidyverse

解决方案


在这里,我们可以使用map

library(purrr)
map(names(myData), get.values, df = myData) %>%
      reduce(rowr::cbind.fill, fill = "")
#    variable1 variable2 variable3
#1       cat       yes    yellow
#2       dog        no     white
#3               maybe          

推荐阅读