You need to enable JavaScript to run this app. R语言嵌套列表提取性别统计值拆分至male/female独立列及报错处理
优惠活动
大模型
产品
解决方案
定价
更多

R语言嵌套列表提取性别统计值拆分至male/female独立列及报错处理

问题修复方案

报错原因

dplyr::if_else()对返回值类型要求严格,真假分支返回值必须为同一类型。你代码中用于填充缺失的0默认是双精度浮点型,而table()输出的计数值为整数型,类型不匹配触发报错。

修复代码

将填充值0改为整数型0L即可解决问题,修改后的完整代码如下:

library(purrr)
library(dplyr)

male_values <- map(male_female_row, "male") %>%
  map(~ if_else(is.null(.x), 0L, .x)) %>%
  unlist()

female_values <- map(male_female_row, "female") %>%
  map(~ if_else(is.null(.x), 0L, .x)) %>%
  unlist()

result <- tibble(male = male_values, female = female_values)

运行后result中会按行存储对应的男女性别计数,无对应性别时自动填充0,符合需求。

优化实现(可选)

可以通过长表转换的方式替代原有循环逻辑,代码更简洁鲁棒性更高:

library(tidyr)
library(dplyr)

result <- test1 %>% 
  mutate(row_id = row_number()) %>% 
  pivot_longer(-row_id, values_to = "name", values_drop_na = TRUE) %>% 
  mutate(gender = gender::gender(name)$gender) %>% 
  count(row_id, gender) %>% 
  pivot_wider(names_from = gender, values_from = n, values_fill = 0L) %>% 
  select(-row_id)

内容的提问来源于stack exchange,提问作者Max H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 08:24:05