R语言如何按行最大绝对值对data.frame数据框的行进行排序
R按行最大绝对值排序实现方案
你提供的原始数据框中各列混合了字符串与数值类型,需要先将所有列统一转换为数值类型,才能正确计算绝对值完成排序。
# 原始数据构造 a <- c("5", 7, 9, "11") b <- c("-8", "-10", -3, -1) c <- c(-4, -1, "-6", "3") df <- data.frame(a,b,c) # 统一转换所有列为数值类型 df[] <- lapply(df, function(x) as.numeric(as.character(x)))
基础R实现
# 计算每行最大绝对值,按该值降序排序 df_sorted <- df[order(-apply(df, 1, function(row) max(abs(row)))), ]
dplyr 实现(适合tidy语法场景)
library(dplyr) df_sorted <- df %>% rowwise() %>% mutate(max_abs = max(abs(c_across(everything())))) %>% arrange(desc(max_abs)) %>% select(-max_abs)
输出结果
a b c 4 11 -1 3 2 7 -10 -1 3 9 -3 -6 1 5 -8 -4
内容的提问来源于stack exchange,提问作者JP_SC
相关产品推荐
相关产品推荐

