R语言mtcars数据集获取wt列最近匹配值及对应来源列名的方法
实现方法
你之前的代码中max.col已经返回了每一行在排除wt的列中,最接近值对应的子数据集列索引,直接复用这个索引即可拿到对应列名,完整代码如下:
# 先定义wt列的索引位置 col <- which(colnames(mtcars) == "wt") # 先存储最接近列的索引,避免重复计算 closest_idx <- max.col(-abs(mtcars[, col] - mtcars[, -col])) # 计算near_wt字段(和你原有逻辑一致) mtcars$near_wt <- mtcars[, -col][cbind(1:nrow(mtcars), closest_idx)] # 计算对应来源列名:直接用索引取排除wt后的列名集合即可 mtcars$near_wt_col <- colnames(mtcars[, -col])[closest_idx]
效果验证
运行后查看前6行的对应字段效果:
head(mtcars[, c("wt", "near_wt", "near_wt_col")])
输出示例:
wt near_wt near_wt_col Mazda RX4 2.620 3.90 drat Mazda RX4 Wag 2.875 3.90 drat Datsun 710 2.320 3.85 drat Hornet 4 Drive 3.215 3.08 drat Hornet Sportabout 3.440 3.15 drat Valiant 3.460 2.76 drat
内容的提问来源于stack exchange,提问作者lsangha
相关产品推荐
相关产品推荐

