R语言对含NA的多数值列应用gt_sparkline()报错如何解决?
报错修复方案
核心原因
你的代码存在两个问题共同触发报错:
- 未加
rowwise()按行处理,c_across()会将全表所有数值列的所有值合并为一个列表,而非每行对应自身的4个季度序列值 - 原始数值列存在
NA缺失值,gt_sparkline()计算绘图参数时遇到缺失值会返回空值,无法满足逻辑判断要求
修复方法
方案1:直接剔除每行的缺失值绘图
library(tidyverse) library(gt) library(gtExtras) df %>% # 按行处理,每行单独生成自己的时间序列列表 rowwise() %>% # 生成序列时剔除NA值 mutate(data = list(na.omit(c_across(where(is.numeric))))) %>% ungroup() %>% gt() %>% gt_sparkline(data)
方案2:保留时间轴位置,自动跳过缺失值
如果需要保证4个季度的时间轴长度一致,不因为剔除NA导致时间点错位,可以直接使用函数自带的缺失值处理参数:
df %>% rowwise() %>% mutate(data = list(c_across(where(is.numeric)))) %>% ungroup() %>% gt() %>% # 开启缺失值忽略,同时固定序列长度为4个时间点 gt_sparkline(data, na.rm = TRUE, limit = 4)
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

