如何重新排列列表中的对象?以R语言mtcars拆分列表重排为例
调整R列表元素顺序的简单方法
嘿,这个问题其实超容易解决的!在R里,你只需要直接用目标名字的向量来索引列表,就能轻松重新排列元素顺序啦。
具体解法
你已经有了list1 <- split(mtcars, mtcars$cyl),现在要把顺序改成8、4、6,只需要执行这一行代码:
list1 <- list1[c("8", "4", "6")]
验证结果
执行完上面的代码后,再运行names(list1),输出就会变成:
[1] "8" "4" "6"
补充说明
- 这种方法的核心是:R的列表支持用字符向量来选取/重新排列元素,只要向量里的名字和列表的
names()完全匹配就行,非常直观。 - 如果你不想用名字,也可以用元素的位置索引:原来的列表里"8"是第3个元素,"4"是第1个,"6"是第2个,所以也可以写
list1[c(3, 1, 2)],效果是一样的,但用名字索引更不容易出错,尤其是当列表元素比较多的时候。
你可以再用lapply(list1, head)来检查每个子集的内容,确认顺序调整后数据是正确的~
内容的提问来源于stack exchange,提问作者cephalopod
相关产品推荐
相关产品推荐

