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

tidyr包crossing()函数输出未生成预期列名求助

tidyr::crossing()输出列名带x$/y$前缀的异常排查

使用tidyr::crossing()处理部分数据框时,生成的交叉tibble中变量名呈现x$col_name、y$col_name的格式;但执行crossing(iris, mtcars)时,输出列名正常,无此类前缀。已确认输入数据框类型与示例一致,且无重复列名,因隐私限制无法共享数据,需排查问题原因。

示例代码:

crossing(iris, mtcars)

会话信息:

R version 4.2.0 (2022-04-22 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.utf8  LC_CTYPE=English_United States.utf8   
[3] LC_MONETARY=English_United States.utf8 LC_NUMERIC=C                           
[5] LC_TIME=English_United States.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base      

other attached packages:
 [1] writexl_1.4.0   readxl_1.4.0    lubridate_1.8.0 forcats_0.5.1   stringr_1.4.0   dplyr_1.0.9    
 [7] purrr_0.3.4     readr_2.1.2     tidyr_1.2.0     tibble_3.1.7    ggplot2_3.3.6   tidyverse_1.3.1

loaded via a namespace (and not attached):
 [1] cellranger_1.1.0 pillar_1.7.0     compiler_4.2.0   dbplyr_2.2.0     tools_4.2.0     
 [6] jsonlite_1.8.0   lifecycle_1.0.1  gtable_0.3.0     pkgconfig_2.0.3  rlang_1.0.2     
[11] reprex_2.0.1     rstudioapi_0.13  DBI_1.1.3        cli_3.3.0        haven_2.5.0     
[16] xml2_1.3.3       withr_2.5.0      httr_1.4.3       fs_1.5.2         generics_0.1.2  
[21] vctrs_0.4.1      hms_1.1.1        grid_4.2.0       tidyselect_1.1.2 glue_1.6.2      
[26] R6_2.5.1         fansi_1.0.3      tzdb_0.3.0       modelr_0.1.8     magrittr_2.0.3  
[31] backports_1.4.1  scales_1.2.0     ellipsis_0.3.2   rvest_1.0.2      assertthat_0.2.1
[36] colorspace_2.0-3 utf8_1.2.2       stringi_1.7.6    munsell_0.5.0    broom_0.8.0     
[41] crayon_1.5.1  

排查方向:

  • 确认传入crossing()的是直接的数据框对象,而非未求值的表达式、列表元素引用或其他嵌套结构
  • 检查数据框列名是否包含特殊字符(如$、空格、非ASCII字符),这类字符可能触发内部命名逻辑异常
  • 尝试更新tidyr至最新稳定版(当前使用的1.2.0存在命名处理相关的已知bug,后续版本已修复)
  • 检查是否存在自定义crossing()函数覆盖了tidyr原生函数,可通过tidyr::crossing()明确调用验证
  • 确认数据框类属性,执行class(your_df)检查是否为标准data.frame或tibble,避免特殊子类干扰
  • 简化测试数据:截取原数据框的前几行/几列再调用crossing(),判断是否仍出现前缀问题,缩小排查范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:39:09