如何在R中按tibble内的n值降序排序列表中的各tibble
解决方案
错误原因先理清楚
- 你用
b[1]取到的是长度为1的列表对象,而dplyr::arrange只能处理数据框/tibble,所以会报no applicable method for 'arrange' applied to an object of class "list",得用双括号[[提取列表里的单个tibble。 sort是用来排序原子向量(比如数值、字符向量)的,不能直接处理tibble或列表,所以会提示'x' must be atomic。
1. 逐个处理单个tibble
如果要单独处理列表里的某一个元素,用双括号提取后再排序:
b[[1]] %>% arrange(desc(n))
2. 批量处理整个列表(推荐)
用遍历函数批量对每个tibble执行排序操作:
基础R + dplyr 写法
# 用lapply遍历列表,对每个tibble按n列降序排列 b_sorted <- lapply(b, function(x) arrange(x, desc(n)))
tidyverse 风格写法(需加载purrr包)
library(purrr) # 用map简化遍历逻辑 b_sorted <- map(b, ~arrange(.x, desc(n)))
内容的提问来源于stack exchange,提问作者statsnoobj101
相关产品推荐
相关产品推荐

