You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列名字符向量正确传递给支持多参数的tabyl函数?

问题:janitor::tabyl无法识别字符向量中的多列参数

将包含多个列名的字符向量传给自定义函数内的tabyl时,tabyl仅处理向量的第一个元素,生成单变量统计表,而非期望的多列交叉表。需要保留向量传递方式,因为还要对该向量执行其他操作。

解决方案

tabyl的多列参数为位置式输入(即tabyl(data, col1, col2)),直接传递字符向量会被识别为单个参数。可以用do.call将向量拆分为多个独立参数传递给tabyl,同时不影响后续对向量的其他操作。

修正后的代码

library("tidyverse")
library("janitor")

table_func <- function(data=NULL, vars=NULL) {
  # 用do.call将vars拆分为tabyl的多个列参数
  result <- do.call(tabyl, c(list(data), vars))
  
  # 其他需要用到all_of(vars)的代码示例(比如筛选列)
  # data %>% select(all_of(vars))
  
  return(result)
}

dat <- tibble(x=c(1:4), y=c(5:8))
vc <- c("x","y")

table_func(dat, vc)

输出结果

x 5 6 7 8
 1 1 0 0 0
 2 0 1 0 0
 3 0 0 1 0
 4 0 0 0 1

内容的提问来源于stack exchange,提问作者Modern_ibex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:32:24