如何识别Hmisc包创建的带标签向量?
识别Hmisc包创建的带标签变量
Hmisc包通过label()函数给变量添加的标签,是存储在变量的**"label"属性**中,而labelled::is.labelled()仅识别该包自身创建的labelled类对象,因此无法检测到Hmisc添加的标签变量。
你可以通过以下方式识别这类变量:
自定义函数检测"label"属性
编写一个简单的函数,判断变量是否存在非空的"label"属性,同时兼容labelled包的标签检测:
# 加载必要的包 library(Hmisc) library(purrr) library(labelled) # 创建示例数据 age <- c(21,65,43) label(age) <- "Age in Years" score <- labelled(sample(5, 3, replace = TRUE), c(Bad = 1, Good = 5)) weight <- c(71.5, 87.3, 100.4) d <- data.frame(age, score, weight) # 自定义检测函数:同时识别Hmisc和labelled包的带标签变量 has_any_label <- function(x) { # 检测labelled包的标签对象 labelled::is.labelled(x) || # 检测Hmisc添加的label属性 (!is.null(attr(x, "label")) && attr(x, "label") != "") } # 用map遍历数据集检测所有变量 d %>% map(has_any_label)
运行结果:
$age [1] TRUE $score [1] TRUE $weight [1] FALSE
如果仅需要识别Hmisc创建的带标签变量,可简化函数为:
has_hmisc_label <- function(x) { !is.null(attr(x, "label")) && attr(x, "label") != "" } d %>% map(has_hmisc_label)
内容的提问来源于stack exchange,提问作者llewmills
相关产品推荐
相关产品推荐

