如何总结自定义dplyr函数中的变量列表?

如何总结自定义dplyr函数中的变量列表?,r,function,dplyr,R,Function,Dplyr,起点: 我有一个数据集(TIBLE),其中包含许多同一类(dbl)的变量。它们属于不同的环境。缺少变量(TIBLE中的列)。这是属于一个设置的所有变量的行和 目标: 我的目标是为每个设置生成具有相同数据结构的子数据集,包括“rowSum”变量(我称之为“s1”) 问题: 在每个设置中都有不同数量的变量(当然它们的命名也不同)。 因为它应该是具有不同变量的相同结构,这是函数的典型情况 问题: 如何使用dplyr解决此问题 我写了一个函数来 (1) 为兴趣设置(正在工作)和 (2) 尝试对设置的变量

起点:

我有一个数据集(TIBLE),其中包含许多同一类(dbl)的变量。它们属于不同的环境。缺少变量(TIBLE中的列)。这是属于一个设置的所有变量的行和

目标:

我的目标是为每个设置生成具有相同数据结构的子数据集,包括“rowSum”变量(我称之为“s1”)

问题:

在每个设置中都有不同数量的变量(当然它们的命名也不同)。 因为它应该是具有不同变量的相同结构,这是函数的典型情况

问题:

如何使用dplyr解决此问题

我写了一个函数来

(1) 为兴趣设置(正在工作)和

(2) 尝试对设置的变量进行行和运算(不起作用;为什么?)

由于该函数用于特殊设计的数据集,因此该函数包含两个预定义变量:

天-调查期间的任何一天

N-这是在这个特殊的日子里调查的案件数量

谢谢你的帮助

mkr.sumsetting <- function(...,dataset){

  subvars <- rlang::enquos(...)
  #print(subvars)

  # Summarize the variables belonging to the interessting setting
  dfplot <- dataset %>%
    dplyr::select(day,N,!!! subvars) %>%
    dplyr::mutate(s1 = rowSums(!!! subvars,na.rm = TRUE))

  return(dfplot)
   }

mkr.sumsetting我们可以将其更改为字符串,并使用
as_name
行和的
[
子集数据集

library(rlang)
library(purrr)
library(dplyr)
mkr.sumsetting <- function(...,dataset){

  subvars <- rlang::enquos(...)
  v1 <- map_chr(subvars, as_name)
    #print(subvars)

   # Summarize the variables belonging to the interessting setting
   dfplot <- dataset %>%
     dplyr::select(day, N, !!! subvars) %>%
     dplyr::mutate(s1 = rowSums( .[v1],na.rm = TRUE))

     return(dfplot)
     }

out <- mkr.sumsetting(col1, col2, dataset = df1)
head(out, 3)
#   day  N       col1      col2          s1
#1   1 20 -0.5458808 0.4703824 -0.07549832
#2   2 20  0.5365853 0.3756872  0.91227249
#3   3 20  0.4196231 0.2725374  0.69216051
数据
set.seed(24)

df1请将数据包括到。谢谢!它是有效的。我想我现在已经理解了dplyr函数的编程思想。
mkr.sumsetting <- function(...,dataset){

  subvars <- rlang::enquos(...)

    #print(subvars)

   # Summarize the variables belonging to the interessting setting
   dfplot <- dataset %>%
     dplyr::select(day, N, !!! subvars) %>%
     dplyr::mutate(s1 =  dplyr::select(., !!! subvars) %>%
                               rowSums(na.rm = TRUE))

     return(dfplot)
     }

mkr.sumsetting(col1, col2, dataset = df1)
set.seed(24) 
df1 <- data.frame(day = 1:20, N = 20, col1 = rnorm(20),
    col2 = runif(20))