R语言如何提取排序后dataframe最高绑架率对应的行名与数值
问题原因
你调用row.names.data.frame(TopKidnap$Kidnapping)未得到预期结果的核心原因:TopKidnap$Kidnapping是从数据框中提取的单列数值向量,仅保留了数值本身,不继承原数据框的行名属性,行名是数据框层级的元数据,仅存储在TopKidnap数据框对象中。
可行实现方案
基础R实现
- 仅提取最高绑架率对应的国家名:
rownames(TopKidnap)[1]
运行后直接返回结果:"Luxembourg"
- 同步输出国家名与对应绑架率:
# 方法1:直接拼接输出 cat("最高绑架率国家:", rownames(TopKidnap)[1], ",绑架率:", TopKidnap$Kidnapping[1], "\n") # 方法2:保留数据框结构输出,自动展示行名 TopKidnap[1, "Kidnapping", drop = FALSE]
方法2输出示例:
Kidnapping Luxembourg 7.17
Tidyverse风格实现
如果平时使用tidyverse生态工具,可以先将行名转为普通列后操作,逻辑更直观:
library(tibble) library(dplyr) TopKidnap %>% rownames_to_column("country") %>% # 将行名转为名为country的普通列 slice_max(Kidnapping, n = 1) %>% # 取绑架率最高的1行 select(country, Kidnapping) # 筛选需要展示的列
内容的提问来源于stack exchange,提问作者iKcon
相关产品推荐
相关产品推荐

