首页 > 解决方案 > Tidyverse 问题:为什么这个由 tribble 创建的 tibble 列不被识别?

问题描述

我正在建立一个血压监测系统,其直接目标是随着时间的推移绘制读数,以显示每个读数所属的类别。为此,不同的类别将采用颜色编码,如此所示。

第二个目标是将我的知识和工作流程迁移到 tidyverse。因此,我是使用 tidyverse 的新手。

通常有两种血压,收缩压和舒张压,这两种都可以按照它们落入的范围进行分类(例如,“正常”、“升高”等)。我当前的工作流程是:(1)创建一个包含两种范围的小标题,(2)使用此信息为每个类别构建适当颜色的 ggplot 矩形,(3)将矩形组合成收缩压和舒张压的模板,(4)对第三个模板(静息心率)做类似的事情,(5)将适当的时间序列作为点几何添加到每个模板中,(6)将其显示在三个图表的列中。我在前两个步骤中遇到了问题,如下所示。

library(tibble)
library(tsibble)
library(ggplot2)

# Start with the background colors for blood pressure levels
bp_colors <- 
    c(Low = "lightblue",
      Normal = "#39ba25",
      Elevated = "#e3e029",
      `Stage 1` = "#eff8c00",
      `Stage 2` = "darkred",
       Crisis = "red")
# Now enter the ranges for the different kinds of reading
bp_ranges <- tribble(
~TYPE,     ~LABEL,      ~CATEGORY,   ~LOW,   ~HIGH,  
#-----|-------------|-------------|-------|--------
"SBP",  "Systolic",        "Low",      0,      90,
"SBP",  "Systolic",     "Normal",     90,     120,
"SBP",  "Systolic",   "Elevated",    120,     129,  
"SBP",  "Systolic",    "Stage 1",    130,     139,
"SBP",  "Systolic",    "Stage 2",    140,     179,
"SBP",  "Systolic",     "Crisis",    180,     400,
# See https://www.scienceabc.com/eyeopeners/how-high-can-a-blood-pressure-go.html
"DBP",  "Diastolic",       "Low",      0,      60,
"DBP",  "Diastolic",    "Normal",     60,      80,
"DBP",  "Diastolic",  "Elevated",     80,      80,
"DBP", "Diastolic",    "Stage 1",     80,      89,
"DBP", "Diastolic",    "Stage 2",     90,     119,  
"DBP", "Diastolic",     "Crisis",    120,     400,
# See https://www.scienceabc.com/eyeopeners/how-high-can-a-blood-pressure-go.html
)

# Now create the SBP & DBP templates.

SBP_ranges <- filter(bp_ranges, TYPE == "SBP")

这是据我所知。最后一条语句抛出此错误:

Error in filter(bp_ranges, TYPE == "SBP") : object 'TYPE' not found

怎么了?

标签: rggplot2filtertidyversetibble

解决方案


推荐阅读