如何在R数据框中引用无表头的变量名?(nearZeroVar场景)
提取零方差变量名的标准方法
在R中,数据框的行名并非所谓的“幽灵列”,它是数据框的内置属性,有成熟的标准方法提取:
方法1:直接筛选行名
结合逻辑条件直接提取符合zeroVar == TRUE的行名,是最直接的方式:
# 提取标记为零方差的变量名 zero_var_vars <- rownames(train1_nzv_y0[train1_nzv_y0$zeroVar == TRUE, ])
执行后zero_var_vars会得到字符向量c("x1", "x2", "x3", "x4"),完全匹配你的需求。
方法2:将行名转为正式列(可选)
如果后续需要把变量名作为普通列操作,可将行名转换为数据框的正式列:
# 基础R实现 train1_nzv_y0$var_name <- rownames(train1_nzv_y0) zero_var_vars <- train1_nzv_y0[train1_nzv_y0$zeroVar == TRUE, "var_name"] # tidyverse风格实现(需先加载tidyverse包) library(tidyverse) train1_nzv_y0 <- train1_nzv_y0 %>% rownames_to_column(var = "var_name") zero_var_vars <- train1_nzv_y0 %>% filter(zeroVar == TRUE) %>% pull(var_name)
更简便的方式:直接用nearZeroVar返回变量名
nearZeroVar本身支持直接返回零方差变量名,无需先生成带指标的数据框:
# 一步获取零方差变量名 zero_var_vars <- nearZeroVar(train1[train1$y == "no", ], names = TRUE, saveMetrics = FALSE)
内容的提问来源于stack exchange,提问作者RobertF
相关产品推荐
相关产品推荐

