如何基于系数矩阵的信息对数据框(data frame)执行取子集操作
实现方法
你可以通过逻辑筛选出系数矩阵中非零值对应的变量名,再对原数据框按列索引即可实现需求,代码简洁且支持任意数量的非零系数变量,无需手动指定变量名:
# 1. 提取所有系数非零的变量名 selected_vars <- rownames(CF)[CF[, 1] != 0] # 2. 索引原数据框得到仅含目标变量的新数据框 # 加drop = FALSE是为了避免仅筛选到1个变量时自动转为向量 df_var <- df[, selected_vars, drop = FALSE] # 如果需要返回矩阵格式,直接转换即可 df_var_matrix <- as.matrix(df_var)
代码说明
- 先用
CF[, 1] != 0生成布尔向量,标记系数矩阵中每一行的系数是否为非零值 - 用该布尔向量索引系数矩阵的行名,即可自动得到所有系数非零的变量名称集合
- 直接用变量名称集合索引原数据框的列,即可得到目标结果,和你示例中预期的
df_var输出完全一致
内容的提问来源于stack exchange,提问作者odar
相关产品推荐
相关产品推荐

